請問一個 SetWindowLong 的問題 |
缺席
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
如果我把一個 member function 宣告為:
LRESULT CALLBACK TMyClass::HookProc(HWND hHwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
{
... some codes
} 然後我想把上面的 function 加入某一個 form 的 windowproc, 所以我用. SetWindowLong(MyHandle, GWL_WNDPROC, LONG(&HookProc)); 結果 compile 時會有
[C Error] JsKeyboard.cpp(44): E2031 Cannot cast from 'long (__stdcall * (_closure )(void *,unsigned int,unsigned int,long))(void *,unsigned int,unsigned int,long)' to 'long'
的 error.
請問要如何解決. Jesse Chan
------
Jesse Chan |
FrederickPau
資深會員 發表:4 回覆:161 積分:268 註冊:2002-11-04 發送簡訊給我 |
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
引言: 改成 SetWindowLong( myHandle, GWL_WNDPROC, LONG( HookProc( hHwnd, uiMsg, wParam, lParam))); 就可以了 應該是你 HookProc 回存的值不是位置, 而 HookProc 裡的參數也沒下的關係吧 BCB 我不太熟 ... 但希望可以幫得上忙感謝熱心回應, 不過看起來好像不對, 上面這種方式固然 compile 會過, 但是參數要的是 callback function 的位址而不是傳回值, 所以甚至會造成當機吧. 還是感謝您. Jesse Chan
------
Jesse Chan |
FrederickPau
資深會員 發表:4 回覆:161 積分:268 註冊:2002-11-04 發送簡訊給我 |
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
|
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |