程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 解決C++ 無法從void 轉換為LRESULT的方法詳解

解決C++ 無法從void 轉換為LRESULT的方法詳解

編輯:C語言基礎知識
這個應該是一個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)而不論這兩個。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved