線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1714
推到 Plurk!
推到 Facebook!

請問一個 SetWindowLong 的問題

缺席
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-17 22:04:01 IP:61.228.xxx.xxx 未訂閱
如果我把一個 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-17 23:23:51 IP:61.228.xxx.xxx 未訂閱
改成 SetWindowLong( myHandle, GWL_WNDPROC, LONG( HookProc( hHwnd, uiMsg, wParam, lParam))); 就可以了 應該是你 HookProc 回存的值不是位置, 而 HookProc 裡的參數也沒下的關係吧 BCB 我不太熟 ... 但希望可以幫得上忙
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-18 00:02:25 IP:61.228.xxx.xxx 未訂閱
引言: 改成 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-18 00:10:36 IP:61.228.xxx.xxx 未訂閱
真不好意思  因為我沒用過
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-11-21 14:24:25 IP:203.75.xxx.xxx 未訂閱
最後兩天, 沒人回答只好結案. Jesse Chan
------
Jesse Chan
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-11-21 16:26:07 IP:211.23.xxx.xxx 未訂閱
基本上! 你的函式用法用錯了, 跟你的目的差滿多的    以下是我的建議: 1. 要Hook BCB內的VCL上的WindowProc 可參考: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20072 2. CALLBACK function可以用__stdcall來代替, 程式閱讀起來變簡單, 請參考: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20045    希望對你有幫助
系統時間:2024-04-26 10:35:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!