龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

谈谈MFC中的消息映射(5)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
比如:假设你想成员函数OnKeydownList1处理ClistCtrl(标识ID=IDC_LIST1)的 LVN_KEYDOWN消息,你可以使用类向导添加如下的消息映射: ON_NOTIFY( LVN_KEYDOWN, IDC_LIST1, OnKeydow

  比如:假设你想成员函数OnKeydownList1处理ClistCtrl(标识ID=IDC_LIST1)的 LVN_KEYDOWN消息,你可以使用类向导添加如下的消息映射:

   ON_NOTIFY( LVN_KEYDOWN, IDC_LIST1, OnKeydownList1 )

  在上面的例子中,类向导提供如下函数:

   void CMessageReflectionDlg::OnKeydownList1(NMHDR* pNMHDR, LRESULT* pResult)

    {

     LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;

     // TODO: Add your control notification handler

     // code here

     *pResult = 0;

     }

   这时类向导提供了一个适当类型的指针.你既可以通过pNMHDR,也可以通过 pLVKeyDow来访问这个通知结构。

  如前所述,有时我们可能需要为一组控件处理相同的WM_NOTIFY消息.这时需要使用ON_NOTIFY_RANGE而不是ON_NOTIFY.当你使用 ON_NOTIFY_RANGE时,你需要指定控件的ID范围.其消息映射入口及函数原型如下:

   ON_NOTIFY_RANGE( wNotifyCode, id, idLast, memberFxn )

    参数说明:

     wNotifyCode:消息通知码.比如:LVN_KEYDOWN,

     id: 第一控件的标识ID。

     idLast:最后一个控件的标识ID。(标识值一定要连续)

     memberFxn: 消息处理函数。

    成员函数必须有如下原型申明:

    afx_msg void memberFxn( UINT id, NMHDR * pNotifyStruct, LRESULT * result );

    其中id的表示发送通知消息的控件标识ID

  结束语:

  于目前介绍MFC消息映射的资料甚少.而这部分内容对编程又相当重要.本文简要地介绍了MFC中的几种重要的消息映射处理.但基于篇幅有限没能作更全面更深入的探讨.

精彩图集

赞助商链接