這個應該是一個MFC程序,ON_MESSAGE是添加消息響應函數,這句話就是添加熱鍵WM_HOTKEY的響應函數。當你注冊了熱鍵之後,當用戶按下熱鍵,會執行OnHotKey函數來處理這個消息。錯誤就應該是OnHotKey這個函數的聲明錯誤了,返回值應該是LRESULT. VS2008對消息的檢查更為嚴格,以前在VC6下完全正常運行的消息映射在VS2008下編譯不通過
ON_MESSAGE(WM_message,OnMyMessage);
OnMessage返回值必須為LRESULT,其形式為:afx_msg LRESULT OnMessage(WPARAM, LPARAM);
如果不符合,則有錯誤提示:error C2440: “static_cast”:無法從“void (__thiscall CMainFrame::* )(void)”轉換為“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
解決方法如下:首先,把原來的消息函數返回值類型改為LRESULT,函數內可以隨便寫個return 0;然後消息函數的參數必須改寫成(WPARAM wParam,LPARAM lParam)而不論這兩個。