无法从“void (__thiscall CtestDlg::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”

来源:互联网 发布:针对淘宝店主调查问卷 编辑:程序博客网 时间:2024/06/05 14:25

按照孙鑫的教程添加自定义消息时,如果是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参数,没有返回值。

转载自:http://blog.csdn.net/zhuce0001/article/details/9149313

0 0