MFC-自定义消息

来源:互联网 发布:ubuntu命令行中文 编辑:程序博客网 时间:2024/04/30 23:36

微软定义的消息都是小于WM_USER的,所以我们想要自定义消息这个ID就要大于WM_USER,也就是16进制大于WM_USER对应的16进制.自定义消息有两种

方法一:直接定义消息
1.

//只要大于WM_USER就行#define WM_MY_MESSAGE (WM_USER+0x10)

2.写消息处理函数的声明

//这是规定的写法,写错了就映射不了了afx_msg LRESULT OnMyMessage(WPARAM wParam,LPARAM lParam);

3.消息映射

ON_MESSAGE(WM_MY_MESSAGE,CMFCTESTDlg::OnMyMessage)

4.写函数体

LRESULT CMFCTESTDlg::OnMyMessage(WPARAM wParam, LPARAM lParam){    //测试消息的Messagebox    AfxMessageBox(TEXT("My message"));    return 0;}

5.触发消息

void CMFCTESTDlg::OnBnClickedButton1(){    // TODO: 在此添加控件通知处理程序代码    //两种发送消息的方法    //PostMessage(WM_MY_MESSAGE);    SendMessage(WM_MY_MESSAGE);}

效果如图:

方法2:消息注册函数
1.

//定义为一个字符串等会传入注册消息函数#define WM_MY_REGISTER_MESSAGE   TEXT("My Register Message")

2.在构造函数中注册消息
返回的UINT定义为全局变量
UINT WM_MY_REGISTER_MSG = 0;

//注册消息,返回一个UINT的无符号整数    WM_MY_REGISTER_MSG = RegisterWindowMessage(WM_MY_REGISTER_MESSAGE);

3.消息函数声明

afx_msg LRESULT OnMyRegisterMessage(WPARAM wParam, LPARAM lParam);

4.消息映射

//注册消息要多加个REGISTEREDON_REGISTERED_MESSAGE(WM_MY_REGISTER_MSG,CMFCTESTDlg::OnMyRegisterMessage)

5.写函数体

LRESULT CMFCTESTDlg::OnMyRegisterMessage(WPARAM wParam, LPARAM lParam){    AfxMessageBox(TEXT("My Register Message"));    return 0;}

6.触发消息

void CMFCTESTDlg::OnBnClickedButton2(){    // TODO: 在此添加控件通知处理程序代码    //两种发送消息的方法    //PostMessage(WM_MY_MESSAGE);    SendMessage(WM_MY_REGISTER_MSG);}

效果如图:

0 0
原创粉丝点击