




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
利用Delphi编写Windows控制面板组件及实例 张建军(中国人民解放军合肥炮兵学院研究生系97级)韩莹(中保财险安徽省铜陵市分公司计财部)关键词:在Windows95/NT/98操作系统中,控制面板(ControlPanel)提供了定制Windows的操作方法,通过它可以完成设置打印机、显示、网络、添加新硬件等功能。通常控制面板包含20多个组件(*.CPL),分别负责系统某一方面的设置。鼠标双击任一组件图标,控制面板调用相应程序,弹出对话框,允许设置系统参数。确认修改后系统参数保存在Windows注册表或某一配置文件(*.INI)中。一、控制面板组件基础知识控制面板是一个Windows应用程序C:\WINDOWS\CONTROL.EXE,其配置文件是C:\WINDOWS\CONTROL.INI.控制面板组件是一些动态链接库,其扩展名不是DLL,而是CPL.通常,控制面板组件保存在C:\WINDOWS\SYSTEM\目录下。在CONTROL.INI中有一个[MMCPL]节,该节可指定由CONTROL.EXE调用的动态链接库,其格式一般为:…[MMCPL]uniqueName=D:\PROJECT1.DLL(这里假设PROJECT1为用户编写的控制面板组板文件名,其访问路径可由读者自行确定)…采用此方法,PROJECT1.DLL不必存放在C:\WINDOWS\SYSTEM\目录下,扩展名不必改为CPL.CONTROL.EXE运行后按以下顺序调用这些动态链接库:在C:\WINDOWS\SYSTEM\目录下调用MAIN.INI.已加载并输出CplApplet()函数的可安装驱动程序。在CONTROL.INI[MMCPL]节中指定的DLL.在C:\WINDOWS\SYSTEM\目录下调用CPL.因此,编写控制面板组件近似于编写普通DLL.通常一个CPL支持控制面板中的一个组件(即一个图标),也可支持多个组件。本文介绍利用Delphi编写CPL、扩充控制面板组件(一个CPL支持一个或多个组件)的方法。二、控制面板组件工作流程1、每个CPL文件必须输出一个CplApplet函数,与CONTROL.EXE之间传递、处理消息。CplApplet函数的原形是:typeTCPLApplet=function(hwndCPl:THandle;uMsg:DWORD;lParam1,lParam2:Longint):Longint;stdcall;其中,hwndCPl是控制面板窗口句柄,uMsg是消息标识,lParam1、lParam2是两个附加参数,具体意义视uMsg的值而定。2、当CONTROL.EXE把各CPL(或DLL)调入内存时,CONTROL.EXE立刻向CPLApplet发送一条CPL_INIT消息,要求CPL执行全局初始化并分配内存。CPL_INIT是唯一可以返回调用失败的消息。如果初始化成功,CPL返回非零,否则返回零。如果CPL返回零,控制面板终止与CPL通信并卸载此CPL(或DLL)。3、CPL_INIT消息处理结束后,CONTROL.EXE立刻向CPLApplet发送一条CPL_GETCOUNT消息,CPL返回支持的组件数。4、CPL_GETCOUNT消息处理结束后,CONTROL.EXE立刻向CPLApplet发送一条CPL_NEWINQUIRE消息,CPL_NEWINQUIRE每次发送一条,以取得每个组件的图标、名称、提示内容(显示在控制面板的状态栏)等信息。lParam1是指定对话框的数值,该值应在0到(CPL_GETCOUNT-1)之间。如果CPL_NEWINQUIRE处理成功,返回0.说明:◆在Windows3.X系统中,CONTROL.EXE发送的是CPL_INQUIRE消息。为向下兼容,该消息被保留。基于Win32的CPL应使用CPL_NEWINQUIRE.◆通过判断lParam1的值,可对一个CPL支持的多个组件的图标、名称、提示内容等进行控制。5、控制面板显示所有查找到的组件图标。鼠标双击任一组件图标,控制面板向其CPL发送一条CPL_DBLCLK消息,CPL显示相应对话框,供用户改变系统设置。说明:◆通过检测lParam1的值,可判断用户双击的是一个CPL支持的多个组件中的哪个图标,并运行相应程序。6、控制面板关闭时,向每个组件发送一条CPL_STOP消息,然后对每个CPL发送一条CPL_EXIT消息,CPL释放内存并卸载。三、控制面板组件编写实例1、编程步骤:在DelphiIDE中选取菜单File-New-DLL-OK.②在Project1中添加如图所示Form1、Form2……,根据需要设计窗体界面。为简略起见,本文仅以Form1为例。③Form1主要代码:(为编写基于Win32的CPL,本文以读写

一吃****春晓
实名认证
内容提供者


最近下载
一种基于双轨缆道的牵引式雷达波在线测流系统.pdf
一种基于双轨缆道的牵引式雷达波在线测流系统.pdf
一种胃肠道超声检查助显剂及其制备方法.pdf
201651206021+莫武林+浅析在互联网时代下酒店的营销策略——以湛江民大喜来登酒店为例.doc
201651206021+莫武林+浅析在互联网时代下酒店的营销策略——以湛江民大喜来登酒店为例.doc
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf