欢迎光临~湖南智能应用科技有限公司-hniat.com
语言选择: 中文版 ∷  英文版

基础知识

自定义ON_NOTIFY消息

一种程序系统用语。
ON_NOTIFY [1]  : 在MFC应用程序里处理 WM_NOTIFY 消息
函数CWnd::OnNotify处理通告消息。其默认实现是检查通告消息处理函数的消息映射,然后调用。(checks the message map for notification handlers to call.)
一般说来,你不用重载OnNotify。你可以写一个处理函数,然后在你自己的窗口类的消息映射表里添加一个该函数的消息映射入口。
ClassWizard,通过ClassWizard属性页或者WizardBar工具条,能够创建ON_NOTIFY消息映射入口,并且给您提供了一个处理函数的框架。
ON_NOTIFY 消息映射宏的语法如下
ON_NOTIFY( wNotifyCode, id, memberFxn )
斜体字的参数被替换为:
wNotifyCode
要被处理的通告消息代码,如 LVN_KEYDOWN。
id
发送通告消息的控件ID。
memberFxn
通告消息发送后被调用的成员函数。
你的成员函数必须按照如下形式声明:
afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );
斜体字参数为::
pNotifyStruct
指向通告消息结构的指针,类型如上声明。
result
指向函数返回之前要被设置结果值的变量指针。
代码实例
现指定你要成员函数OnKeydownList1函去处理ID为IDC_LIST1的CListCtrl控件的LVN_KEYDOWN消息,你可以通过ClassWizard把下面的内容加入到你的消息映射表里:
ON_NOTIFY( LVN_KEYDOWN, IDC_LIST1, OnKeydownList1 )
在上面的例子里,ClassWizard提供的函数是:
void CMessageReflectionDlg::OnKeydownList1(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
// TODO: Add your control notification handler
// code here

*pResult = 0;
}
ClassWizard自动生成合适类型的指针。你可以通过pNMHDR或者pLVKeyDow访问通告消息结构体。

--以上来自百度


1.定义NOTIFY消息

#define NM_MOUSEUP              (NM_FIRST-25)

2.定义结构(任意结构)

typedef struct tagNMLVSELFDEFINEDATA
{
 NMHDR   hdr;
 int     iStatus;
 PVOID myData;
} NMLVSELFDEFINEDATA, *LPNMLVSELFDEFINEDATA;

3.发送NOTIFY消息

NMLVSELFDEFINEDATA dispinfo = {0};
 dispinfo.hdr.code = NM_MOUSEUP;
 dispinfo.hdr.hwndFrom = m_hWnd;
 dispinfo.hdr.idFrom = GetDlgCtrlID();
 dispinfo.iStatus = -1;
 dispinfo.myData = NULL;
 ::SendMessage(this->GetParent()->m_hWnd, WM_NOTIFY, GetDlgCtrlID(), (LPARAM) &dispinfo);

 

4.接收控件ON_NOTIFY消息

BEGIN_MESSAGE_MAP(TF_PhotoGroupDlg, CDialog)
 //{{AFX_MSG_MAP(TF_PhotoGroupDlg)
 ON_NOTIFY(NM_MOUSEUP, IDC_LIST_PHOTO, OnMouseUpListPhoto)
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

 

5..h中设置OnMouseUpListPhoto

//{{AFX_MSG(TF_PhotoGroupDlg)

afx_msg void OnMouseUpListPhoto(NMHDR* pNMHDR, LRESULT* pResult);
 //}}AFX_MSG
 DECLARE_MESSAGE_MAP()

 

6.CPP中设置消息

void TF_PhotoGroupDlg::OnMouseUpListPhoto(NMHDR* pNMHDR, LRESULT* pResult)
{

}

 

结束。

关闭
用手机扫描二维码关闭
二维码