这几天接触一个MFC自定义消息,但是之前没用过,犯了一个低级错误,粘贴出来供大家参考。
下图是Windows消息图示:
有用户自定义消息的一些范围。以一个具体的例子介绍使用方法:
第一步:本人定义一个消息
#define WM_ShowTask WM_USER+1 // WM_ShowTask是自己定义的消息, ShowTask是自己定义的消息名称,WM_USER表示自己定义消息,上图有解释,有范围的
第二步:我用的是MFC dialog程序,我在XXdlg.cpp里面定义一个自己需要的消息处理函数
LRESULT CxxDlg::OnShowTask(WPARAM wParam,LPARAM lParam) //函数类型根据自己需要自己定义,WPARAM ,LPARAM 是消息响应机制,很灵活的两个变量
{
}
第三步:在.cpp里面定义了处理函数,就需要在xxdlg.h里面对函数进行声明,
afx_msg LRESULT OnShowTask(WPARAM wParam,LPARAM lParam); //函数类型自定义
第四步:将消息映射到处理函数,简单来说就是将消息和处理函数绑定
BEGIN_MESSAGE_MAP(CxxDlg, CDialog)
//{{AFX_MSG_MAP(CShutdownDlg)
ON_MESSAGE(WM_ShowTask,OnShowTask)
END_MESSAGE_MAP()
注意这里的位置,本人就在载在这上面,一般的Dialog程序,有两个BEGIN_MESSAGE_MAP() .......END_MESSAGE_MAP,一个是自己的CxxDlg,另一个是系统里的CAboutDlg.我们要在自己需要的Cxxdlg的BEGIN_MESSAGE_MAP()处定义,所以各位大侠看仔细了,否则就会出现错误提示:“****,未定义”;“****,类型不能转换”之类的错误,所以看清楚位置很重要。
好了介绍到此结束,有问题请留言,有错误也请留言,毕竟本人也是出于学习的过程,有错误欢迎指正。
---------------------
作者:feilong911hao
来源:CSDN
原文:https://blog.csdn.net/feilong911hao/article/details/27493157