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

來源:互聯網
上載者:User

這個應該是一個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)而不論這兩個。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.