按照孙鑫的教程添加自定义消息时,如果是VC6.0开发环境,也许没有什么
问题,但在VS2008中编译会报错的
无法从“void (__thiscall CtestDlg::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
这是因为VS2008中消息返回值不允许为void,且消息参数不能为空,消息映射三处分别如下
#define UM_MYMESSAGE (WM_USER + 1)
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
ON_MESSAGE(UM_MYMESSAGE, OnMyMessage)
LRESULT CtestDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
return 1;
}
注意红色部分:VC6.0中LRESULT可以为void,且wParam, lParam参数可以不写,
但在VS2008中必须按上面方式写,即使你不使用wParam, lParam参数,没有返回值。