解決C++ 無法從void 轉(zhuǎn)換為LRESULT的方法詳解
更新時間:2013年05月16日 10:03:17 作者:
本篇文章是對C++中無法從void轉(zhuǎn)換為LRESULT的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
這個應(yīng)該是一個MFC程序,ON_MESSAGE是添加消息響應(yīng)函數(shù),這句話就是添加熱鍵WM_HOTKEY的響應(yīng)函數(shù)。當(dāng)你注冊了熱鍵之后,當(dāng)用戶按下熱鍵,會執(zhí)行OnHotKey函數(shù)來處理這個消息。錯誤就應(yīng)該是OnHotKey這個函數(shù)的聲明錯誤了,返回值應(yīng)該是LRESULT. VS2008對消息的檢查更為嚴(yán)格,以前在VC6下完全正常運(yùn)行的消息映射在VS2008下編譯不通過
ON_MESSAGE(WM_message,OnMyMessage);
OnMessage返回值必須為LRESULT,其形式為:afx_msg LRESULT OnMessage(WPARAM, LPARAM);
如果不符合,則有錯誤提示:error C2440: “static_cast”:無法從“void (__thiscall CMainFrame::* )(void)”轉(zhuǎn)換為“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
解決方法如下:首先,把原來的消息函數(shù)返回值類型改為LRESULT,函數(shù)內(nèi)可以隨便寫個return 0;然后消息函數(shù)的參數(shù)必須改寫成(WPARAM wParam,LPARAM lParam)而不論這兩個。
ON_MESSAGE(WM_message,OnMyMessage);
OnMessage返回值必須為LRESULT,其形式為:afx_msg LRESULT OnMessage(WPARAM, LPARAM);
如果不符合,則有錯誤提示:error C2440: “static_cast”:無法從“void (__thiscall CMainFrame::* )(void)”轉(zhuǎn)換為“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
解決方法如下:首先,把原來的消息函數(shù)返回值類型改為LRESULT,函數(shù)內(nèi)可以隨便寫個return 0;然后消息函數(shù)的參數(shù)必須改寫成(WPARAM wParam,LPARAM lParam)而不論這兩個。
相關(guān)文章
C++實現(xiàn)LeetCode(140.拆分詞句之二)
這篇文章主要介紹了C++實現(xiàn)LeetCode(140.拆分詞句之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07WM_CLOSE、WM_DESTROY、WM_QUIT及各種消息投遞函數(shù)詳解
這篇文章主要介紹了WM_CLOSE、WM_DESTROY、WM_QUIT及各種消息投遞函數(shù),有助于讀者更好的理解windows程序的消息機(jī)制,需要的朋友可以參考下2014-07-07詳解C語言中Char型指針數(shù)組與字符數(shù)組的區(qū)別
這篇文章主要介紹了詳解C語言中Char型指針數(shù)組與字符數(shù)組的區(qū)別的相關(guān)資料,希望通過本文能幫助到大家掌握理解這部分內(nèi)容,需要的朋友可以參考下2017-10-10