程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> CB非可視組件的消息處理技巧

CB非可視組件的消息處理技巧

編輯:vc教程

一個非可視的組件必須對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:
    };

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved