MFC自定义消息

第一步,在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;

扫描二维码关注公众号,回复: 1880745 查看本文章

}

第五步,使用,在需要发消息的地方调用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,这个机制允许用户发送自定义消息时传递参数,不需要传递参数时两者都填零即可.

猜你喜欢

转载自blog.csdn.net/qq_26164563/article/details/80910646