快速創建控制面板程序

Delphi 5快速創建控制面板程序
2007-09-05 18:51

轉貼自: http://www.cnread.net/cnread1/dnwl/cxsj/delphi/ztwd/cxyy/031.htm

---- Borland Delphi是深受廣大軟件開發人員喜愛的一種高效、快速的RAD(Rapid Application Development)開發工具。在1999年秋季發佈的Delphi 5中,Delphi又引入了許多新的特色。其中之一便是Delphi 5的Enterprise和Professional版本中新增了用於快速創建控制面板(CPL)程序的嚮導和類,這使得我們能夠在可視化開發環境中非常方便地建立控制面板應用程序。

---- 一、關於控制面板程序

---- 在Windows中,用戶通過控制面板來進行增刪程序、添加硬件、設置各種系統屬性等操作。控制面板中所顯示的小程序(或稱之爲對話框)是由 控制面板程序(Control Panel Application) 提供的。Windows本身附帶了十來個控制面板應用程序,它們都位於Windows的System32目錄下,擴展名爲*.CPL。每個控制面板中的應用程序可以有一個或多個對話框,每個對話框在控制面板中用一個圖標代表。

---- 控制面板應用程序實質上是一類特殊的動態鏈接庫,每個控制面板程序必須輸出一個CPlApplet函數,它是控制面板應用程序的入口,其主要作用是處理Windows消息。CPlApplet函數的原型爲:



function CPlApplet(
hwndCPl: THandle; //Identifies the main
window of the controlling application.
uMsg: DWORD; // Specifies the message
being sent to the Control Panel application
lParam1, lParam2: Longint // Specify
additional message-specific information
): Longint; stdcall;

---- CplApplet函數是控制面板與控制面板應用程序通訊的唯一方式。一個控制面板程序中的CplApplet函數的基本框架結構如下:



function CPlApplet(hwndCPl: THandle; uMsg: DWORD;
lParam1, lParam2: Longint): Longint;
begin
//…
case (uMsg) of
CPL_INIT: begin {…} end;
CPL_GETCOUNT: begin {…} end;
CPL_INQUIRE: begin {…} end;
CPL_NEWINQUIRE: begin {…} end;
CPL_DBLCLK: begin {…} end;
CPL_STOP: begin {…} end;
CPL_EXIT: begin {…} end;
CPL_STARTWPARMS: begin {…} end;
CPL_SETUP: begin {…} end;
end;
//函數的返回值取決於uMsg
end;

---- 事實上,編寫控制面板程序的主要任務都放在處理這些CPL_消息上,關於這些消息的含義,請參看Delphi 5所帶的幫助文檔Win32.hlp。

---- 爲了簡化控制面板程序的創建,Delphi 5新增了一個可視化構件庫CtlPanel.PAS。CtlPanel單元中定義了TAppletApplication(控制面板應用程序類)和TAppletModule類.

---- 使用TAppletApplication和TAppletModule類構造控制面板應用程序是一件非常輕鬆的事情。下面我來介紹一下在Delphi 5中創建控制面板程序的基本步驟。

---- 二、Delphi 5中建立控制面板程序

---- 第一步:選擇File | New菜單,在New Items對話框的New頁上選擇Control Panel Application,Delphi將創建一個新的控制面板應用程序(其中已經包含一個applet)。Delphi嚮導創建的工程文件如下:



library Project1;
uses
CtlPanel,
Unit1 in 'Unit1.pas'
{AppletModule1: TAppletModule};

exports CPlApplet;
{$R *.RES} {$E cpl}
begin Application.Initialize; Application.CreateForm (TAppletModule1, AppletModule1); Application.Run; end.

---- 在上面的DPR文件中,Application對象的類型是TAppletApplication,而不是TApplication,它是在CtlPanel單元中申明的。而且CplApplet函數也已經由CtlPanel單元定義好了。

---- 第二步:更改AppletModule的屬性

---- 一個 AppletModule 對象代表一個對話框(即applet),一個CPL應用程序可以包含多個對話框。你可以通過Delphi嚮導來增添多個AppletModule。

---- AppletIcon屬性:指定一個圖標,此圖標將出現在控制面板中。

---- Caption屬性:顯示在圖標下面的文字。

---- Help屬性:出現在控制面板窗口的狀態欄上的文字。

---- ResidIcon屬性:圖標資源id,此屬性與AppletIcon屬性互斥。

---- ResidName屬性:字符串資源id,此屬性與Caption屬性互斥。

---- ResidInfo屬性:字符串資源id,此屬性與Help屬性互斥。

---- 第三步:編寫事件句柄

---- 在控制面板中,當鼠標雙擊對話框的圖標時,相應的AppletModule對象會產生OnActivate事件。爲了響應鼠標的雙擊,你需要爲TAppletModule的OnActivate事件屬性提供一個事件句柄。




procedure TAppletModule1. AppletModuleActivate(Sender: TObject; Data: Integer); begin MessageBox(Application.ControlPanelHandle, 'Delphi 5 is so great!', 'CPL Demo', MB_ICONINFORMATION); end;

---- 第四步:CPL的安裝

---- 由於動態連接庫工程文件中有一個{$E cpl}編譯指示字,編譯此DPR文件將產生一個擴展名爲.CPL的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章