無法從“void (__thiscall CtestDlg::* )(void)”轉換爲“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”

按照孫鑫的教程添加自定義消息時,如果是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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章