快速创建控制面板程序

2019-07-13 23:55发布

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又引入了许多新的特 {MOD}。其中之一便是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的