创建自定义消息响应一般流程如下:
1)在头文件中定义消息ID号:#define WM_MYMESSAGE WM_USER+1
2)在头文件中声明消息响应:
afx_msg void OnMyOperate(WPARAM wParam,LPARAM lParam);
3)在cpp文件增加消息映射:
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
//{{AFX_MSG_MAP(CMyDlg)
......
ON_MESSAGE(WM_MYMESSAGE,OnMyOperate)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
4)在cpp文件中增加消息响应的实现
CMyDlg::void OnMyOperate(WPARAM wParam,LPARAM lParam)
{
.....//具体实现
}
在VC6.0下编译没问题,但是在vs2010编译下,会出现如下错误:error C2440: “static_cast”: 无法从“void (__thiscall CMyDlg::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
解决办法:将消息响应函数的返回值由void改为LRESULT即可,注意在具体实现部分最后增加"return TRUE;"语句。