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

自製元件要攔截訊息的問題

缺席
BTE-Tai
一般會員


發表:1
回覆:1
積分:0
註冊:2007-04-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-13 11:08:09 IP:122.124.xxx.xxx 訂閱
請問大家:
小弟想自己做一個元件希望可以攔截WM_DEVICECHANGE.
在一般專案中,小弟用下面的方式可以欄到WM_DEVICECHANGE
<textarea class="cpp" rows="10" cols="60" name="code">//.h void __fastcall WMOnDeviceChange(TMessage &Message); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_DEVICECHANGE, TMessage, WMOnDeviceChange); END_MESSAGE_MAP(TComponent) //.c //--------------------------------------------------------------------------- void __fastcall TForm1::WMOnDeviceChange(TMessage &Message) { ShowMessage("Device Change"); } </textarea>

但是小弟因為要做不可視的元件所以繼承TCompoment,
同樣的方式卻不能攔到訊息,不知原因為何,請各位前輩解惑
<textarea class="cpp" rows="10" cols="60" name="code">//.h class PACKAGE TDevice : public TComponent { private: void __fastcall WMOnDeviceChange(TMessage &Message); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_DEVICECHANGE, TMessage, WMOnDeviceChange); END_MESSAGE_MAP(TComponent) protected: public: __fastcall TDevice(TComponent* Owner); __published: }; //.c//--------------------------------------------------------------------------- void __fastcall TDevice::WMOnDeviceChange(TMessage &Message) { BYTE test; test = 10; //ShowMessage("Device Change"); } </textarea>

<textarea class="cpp" rows="10" cols="60" name="code">//主程式中 //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Device = new TDevice(this); } //--------------------------------------------------------------------------- __fastcall TForm1::~TForm1() { if (Device) { delete Device; Device = NULL; } } </textarea>

原始程式如附件所示

謝謝大家


BTE-Tai
一般會員


發表:1
回覆:1
積分:0
註冊:2007-04-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-17 15:29:39 IP:122.124.xxx.xxx 訂閱
小弟後來用訊息串接的方式解決了,謝謝各位^_^
系統時間:2024-05-06 2:15:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!