亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C++BUILDER非可視組件的消息處理

2019-11-17 05:51:16
字體:
來源:轉載
供稿:網友
  一個非可視的組件必須對Windows操作系統或用戶定義的消息作出響應。然而,由于一個非可視組件沒有窗口,因此它也沒有窗口句柄,自然它也不能接收到消息,為了解決這一問題,我們的思路是創建一個隱藏的窗口,使非可視組件能夠接收到消息。  為了給你的非可視組件創建一個隱藏的窗口,需要有以下:   1.一個私有變量型(PRivate Variable)的HWnd來取得窗口句柄。   2.一個用來捕捉窗口發送給組件的函數(a WndProc)。   3.對AllcolateHwnd的調用使之創建窗口句柄并設置WndProc。   為了清楚的解釋上述思路和展示創建過程,下面我們將以一個具體的實例來說明。
首先我們先創建一個新的組件,在C++Builder中,選擇FILE|NEW…雙擊組件圖標顯示一個新的組件對話框改變Ancestor Type為Tcomponent和Class name為Ttest并設置完畢。
然后,切換到新組件的頭文件,在類的私有部分(private section)加入以下聲明:   HWnd Fhandle;
    void—fastcall WndProc(Tmessage& Msg);   第一行聲明了一個調用Fhandle的HWnd變量,這個變量將用于窗口創建后捕捉窗口句柄。第二行聲明了一個用于接收消息的WndProc函數。這個函數的聲明必須加以標識,以便限定它是一個WndProc,然后在類聲明Public(公有)部分構造以下聲明:   Viod DoIt( );   這個公有函數將被我們用來測試組件,類聲明應如下:   class PACKAGE Ttest : public     Tcomponent
{
private:    HWnd Fhandle;
void—fastcall WndProc(Tmessage& Msg);    protected:    public:       —fastcall Ttest(Tcomponent* Owner);      void DoIt( );
  
—published:   };   現在切換到組件的代碼單元,將下面一行加入到單元的頂部(在函數上也許是不錯的地方)   #define MY—Message.WM_USER+1   這一行聲明了一個在DoIt函數被調用時,組件將發送給它自己的用戶自定義消息。此時我們必須為組件分配一個窗口句柄。這個句柄將提供一個隱藏的窗口使我們可以捕捉組件中的消息。找到組件構造代碼,加入下面代碼:   —fastcall Test::Test(Tcomponent* Owner): Tcomponent(Owner)
{
Fhandle=AllocateHWnd(WndProc);
}   好,重要的一步已完成,AllocateHWnd函數創建了一個隱藏窗口并且返回它的句柄,注重這里我們為了使Windows知道哪里發來了消息,傳遞WndProc的地址;   現在我們來創建WndProc的函數部分。在源文件中加入:   void—fastcall Ttest::WndProc(Tmessage& Msg)
{
if (Msg.Msg == MY_MESSAGE)
     MessageBox(0, ″Got here!″, ″Message″, 0);
try {
          Dispatch(&Msg);
        }
catch (…) {    application-〉HandleException(this);    }   }   無論何時Windows發送消息給組件,Windows都會調用這個函數。這部分代碼完成了兩件事。首先,它檢查被接收的消息是否是我們用戶自定義的消息。假如是,一個消息框將被顯示,你可以看到實際上我們接收到的消息。其次,這段代碼傳送了系統(或VCL)處理過程中的消息,try/catch塊用來保證,假如異常出現,它將成為缺省風格下的句柄。   概括地說,WndProc函數在為缺省句柄傳遞所有其他消息,監控了所有客戶消息。現在我們創建DoIt函數,完成我們的組件,加入我們創建DoIt函數,完成我們的組件,加入代碼:   void Ttest::DoIt()   {   PostMessage(Fhandle, MY—MESSAGE, 0, 0);   }   這個函數發送一個消息組件的窗口句柄(記住,這個窗口句柄是以前存入到Fhandle數據成品中的)。現在我們已經完成了創建組件選擇,用SelectFile|ColseAll來保存我們的工作測試組件。   下一步將測試組件。假如你使用BCB3,那么你必須把組件加入到“包”(Packege)中,然后用Componet|install(可以使用DCLSTD35 Packege來快速測試)。再選擇你剛存的TestBCB.Cpp,一旦你安裝完成組件后,它將出現在組件板上。雙擊按鈕,為按鈕的OnClick事件創建以下代碼:    Test1-〉 DoIt( );   現在運行程序,當你點擊按鈕時,將看到一個消息框顯示“Got here".   ListingA和B包含了頭文件和源代碼以下列出。   總結:一個可以響應Windows消息的非可視組件有許多用途。最顯而易見的就是用來封裝某些方面的WindowsAPI。例如:TAPI和WinSock發送消息給事件的指定用戶。假如你寫的組件封裝了一個這樣的API。你將需要捕捉Windows發送的消息。而在你的組件中加入隱藏窗口將很好的幫你做到這一點。   以上程序在C++ BUILDER 3.0中調試通過。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩电影在线观看| 日韩一区二区欧美| 国产精品第三页| 欧美专区福利在线| 中文字幕免费精品一区高清| 欧美性在线观看| 国产精品久久久久久久久久久不卡| 麻豆一区二区在线观看| 成人国产精品一区| 日本久久亚洲电影| 久久午夜a级毛片| 2020久久国产精品| 欧洲成人在线视频| 日韩av在线免费| 亚洲一区二区日本| 欧美一区二区影院| 欧美一级视频免费在线观看| 日本久久久久久久久| 成人激情在线播放| 97久久精品人人澡人人爽缅北| 91最新在线免费观看| 在线观看国产欧美| 亚洲精品日韩av| 亚洲一区二区三区香蕉| 亚洲最大福利视频| 国内精品久久久久影院 日本资源| 亚洲综合中文字幕在线观看| 精品视频—区二区三区免费| 欧美一性一乱一交一视频| 国内揄拍国内精品少妇国语| 久久久久久噜噜噜久久久精品| 欧美一乱一性一交一视频| 欧美电影免费观看网站| 91久热免费在线视频| 国产精品第二页| 青草青草久热精品视频在线网站| 欧美一区二区三区四区在线| 日韩美女免费线视频| 国产精品人成电影在线观看| 日韩精品日韩在线观看| 一区二区欧美日韩视频| 国产精品igao视频| 国产亚洲一区精品| 78色国产精品| 26uuu另类亚洲欧美日本一| 日韩中文字幕在线视频播放| 2019亚洲男人天堂| 自拍视频国产精品| 精品亚洲一区二区三区在线观看| 亚洲人成自拍网站| 青青草99啪国产免费| 日韩欧美在线中文字幕| 精品国产依人香蕉在线精品| 亚洲最大的av网站| 久久精品国产亚洲| 亚洲成年人在线播放| 国产精品成人aaaaa网站| 久久国产精品网站| 亚洲伊人第一页| 亚洲欧美激情精品一区二区| 国产在线日韩在线| 中文字幕亚洲欧美在线| 亚洲欧美日韩在线高清直播| 国产日韩av在线播放| 日韩国产高清视频在线| 欧美www视频在线观看| 国产精品高潮呻吟久久av黑人| 欧美在线性爱视频| 亚洲男人天堂九九视频| 国产精品美女久久久免费| 精品视频在线播放色网色视频| 欧美日韩国产中字| 欧美精品激情视频| 亚洲精品少妇网址| 日韩av最新在线观看| 亚洲欧美制服中文字幕| 日韩av一区二区在线| 欧美精品电影在线| 久久久久久尹人网香蕉| 欧美成年人视频网站欧美| 亚洲免费视频在线观看| 亚洲国产精品大全| …久久精品99久久香蕉国产| 亚洲aⅴ日韩av电影在线观看| 91麻豆国产精品| 精品人伦一区二区三区蜜桃网站| 色哟哟亚洲精品一区二区| 81精品国产乱码久久久久久| 国产一区二区三区在线观看网站| 成人情趣片在线观看免费| 欧美专区在线观看| 91久久国产婷婷一区二区| 久久久国产视频| 91精品视频观看| 久久成年人免费电影| 日韩欧美在线视频| 久久久噜久噜久久综合| 92版电视剧仙鹤神针在线观看| 在线视频日韩精品| 日韩av网址在线观看| 亚洲欧美国产一区二区三区| 亚洲国产黄色片| 免费av一区二区| 国产极品精品在线观看| 国产丝袜一区二区三区| 久久免费视频这里只有精品| 国产精品av网站| 国产亚洲美女精品久久久| 伊人亚洲福利一区二区三区| 91丝袜美腿美女视频网站| 日韩欧美精品在线观看| 欧美午夜性色大片在线观看| 亚洲电影av在线| 欧美在线视频免费| 国内外成人免费激情在线视频网站| 成人激情视频在线观看| 久久av资源网站| 91性高湖久久久久久久久_久久99| 成人性生交xxxxx网站| 欧美激情精品久久久久久大尺度| 国产精品美女久久| 最近2019中文字幕大全第二页| 91在线免费视频| 欧美精品在线视频观看| 国产一区二区成人| 亚洲欧美激情视频| 亚洲人高潮女人毛茸茸| 欧美日韩精品在线观看| 91在线高清免费观看| 久久久日本电影| 亚洲四色影视在线观看| 日韩精品中文字幕在线播放| 在线视频免费一区二区| 97视频在线播放| 国产精品69av| 国产婷婷成人久久av免费高清| 欧美在线观看一区二区三区| 超碰精品一区二区三区乱码| 91久久久精品| 成人午夜一级二级三级| 国产成人精品电影| 亚洲精品美女免费| 亚洲欧美国产日韩中文字幕| 国产欧美精品日韩精品| 欧美成aaa人片在线观看蜜臀| 亚洲大胆美女视频| 亚洲片国产一区一级在线观看| 日韩免费在线播放| 欧美午夜视频在线观看| 97视频网站入口| 亚洲91精品在线| 久久人人97超碰精品888| 欧美性色19p| 97精品一区二区三区| 亚洲二区在线播放视频| 亚洲国产古装精品网站| 日韩精品亚洲元码| 黑丝美女久久久| 日韩精品在线免费观看| 91极品女神在线| 欧美日韩高清区| 性色av一区二区三区红粉影视| 国产性色av一区二区| 91久久夜色精品国产网站|