按照孫鑫的教程添加自定義消息時,如果是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參數,沒有返回值。