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

在自製元件裡(繼承自TCustomControl)攔截KeyDown訊息之疑問

尚未結案
tfanalysis
一般會員


發表:10
回覆:9
積分:3
註冊:2007-01-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-25 18:34:24 IP:140.115.xxx.xxx 訂閱
我有一個自製的元件,繼承自TCustomControl 元件裡還包含了一個TEdit元件(當然,是TEdit* ed1產生的) 我的目的是這樣: 使用者(不是程式設計者)在ed1裡輸入文字後,按Enter,執行Paint()將輸入的文字畫在此元件的Canvas上。 換句話說,我是要在程式執行時期做上述的動作,而非programmer在BCB裡拉元件時動作,因此必須在public區段攔截WM_KEYDOWN的message,而我的做法如下:    <textarea cols="60" rows="10" class="cpp" name="code"> //*******在*h檔裡*******// private: MESSAGE void __fastcall WMMouseMove(TWMMouse &Message); public: BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_KEYDOWN, TWMKey, WMKeyDown); END_MESSAGE_MAP(TControl); //*******在*cpp檔裡*******// void __fastcall TScaleX::WMKeyDown(TWMKey &Message){ if(Message.CharCode == VK_RETURN){ FedTxt = "按下enter" ; //FedTxt只是個在private裡宣告的String變數 Paint(); } } </textarea> compile可以過,但程式跑出來卻毫無反應 我確定Paint()沒問題,因為元件中很多地方都有這樣使用 請問眾高手們,問題是出在哪呢? 我用同樣的方法攔截WM_MOUSEMOVE完全沒問題啊... --------- 目前我是先用重載KeyPress的方式解決,但以我的用途應該是要自己攔截WM_KEYDOWN較恰當。
系統時間:2024-05-07 2:42:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!