第一步,在xxxDlg.h中添加消息的定义:
#define MWM_SELFDFMSG (WM_USER+100)
备注:WM_USER由系统定义,小于WM_USER的ID被系统使用,大于WM_USER的供用户使用,避免冲突.自定义的消息一般采用"WM_USER+大于零的数"这种形式.
第二步,在xxxDlg.h中添加消息响应函数的定义:
afx_msg LRESULT MyMsgFunc(WPARAM w,LPARAM l);
第三步,在XXXDlg.cpp中添加消息和消息相应函数的映射:
BEGIN_MESSAGE_MAP(xxxDlg, CDialogEx)
.....
ON_MESSAGE(MWM_SELFDFMSG,&xxxDlg::MyMsgFunc)
......
END_MESSAGE_MAP()
第四步,在xxxDlg.cpp中实现MyMsgFunc(WPARAM w,LPARAM l):
afx_msg LPRESULT MyMsgFunc(WPARAM w,LPARAM l){
/*do some function*/
return 0;
}
第五步,使用,在需要发消息的地方调用PostMessage或SendMessage:
::PostMessage(m_hWnd,MWM_SELFDFMSG, 0, 0);(不等待,消息放到消息队列后直接返回)
::SendMessage(m_hWnd,MWM_SELFDFMSG, 0, 0);(等待,直到消息处理完成后才返回)
PostMessage四个参数:
1.要接收消息窗口的窗口句柄
2.消息
3.WPARAM w
4.LPARAM l
说明:3,4两个参数对应消息接收函数的WPARAM w和LPARAM l,这个机制允许用户发送自定义消息时传递参数,不需要传递参数时两者都填零即可.