C 無法從void 轉換為 LRESULT

2021-06-25 13:25:42 字數 908 閱讀 5344

「static_cast」: 無法從「void (__thiscall cgraspbmpdlg::* )(wparam,lparam)」轉換為「lresult (__thiscall cwnd::* )(wparam,lparam)」

這行出問題

on_message(wm_hotkey,onhotkey)

我都沒看懂……

答:
你這個應該是乙個mfc程式,on_message是新增訊息響應函式,這句話就是新增熱鍵wm_hotkey的響應函式。當你註冊了熱鍵之後,當使用者按下熱鍵,會執行onhotkey函式來處理這個訊息。錯誤就應該是onhotkey這個函式的宣告錯誤了,返回值應該是lresult。

vs2008

對訊息的檢查更為嚴格,以前在vc6

下完全正常執行的訊息對映在vs2008

下編譯不通過

on_message(wm_message,onmymessage);

onmessage

返回值必須為lresult

,其形式為:afx_msg lresult onmessage(wparam, lparam)

無法從「void (__thiscall cmainframe::* )(void)」

轉換為「lresult (__thiscall cwnd::* )(wparam,lparam)」

解決方法如下:

首先,把原來的訊息函式返回值型別改為lresult

,函式內可以隨便寫個return 0;

然後訊息函式的引數必須改寫成(wparam wparam,lparam lparam)

而不論這兩個引數是否用得到;最後,訊息對映如on_message(um_progress,&cmainframe::onprogress)

無法從「object」轉換為「string」

就我在專案中遇到的問題,和大家分享一下 無法從 object 轉換為 string 在把我出錯的 複製上來,guid userid new guid membership.getuser username provideruserkey 對於這個問題說明的一點就是左右的型別不匹配 才會報錯說無法從o...

凝視轉換(c轉換為c )

在轉換凝視前我們先了解乙個概念 什麼是有限狀態機?有限狀態機fsm是軟體上經常使用的一種處理方法,它把複雜的控制邏輯分解成有限個穩定狀態。在每乙個狀態上進行處理。有限狀態機是閉環系統。能夠用有限的狀態,處理無窮的事務。通常我們使用多路分之語句來處理狀態機。即switch case語句 中要處理的情況...

從jupyter轉換為exe格式

從jupyter notebook的ipynb轉換為exe格式 太太太無聊的,網上找了些資料。notebook的ipynb格式貌似不能直接轉化成exe可執行檔案,發給沒有py編譯環境的人 沒什麼好解釋了,直接上碼 try jupyter nbconvert to python untitled15....