说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Delphi 5快速创建控制面板程序

HTML文档下载 WORD文档下载 PDF文档下载
Delphi 5快速创建控制面板程序

---- Borland Delphi是深受广大软件开发人员喜爱的一种高效、快速的RAD(Rapid Application Development)开发工具。在1999年秋季发布的Delphi 5中,Delphi又引入了许多新的特色。其中之一便是Delphi 5的Enterprise和Professional版本中新增了用于快速创建控制面板(CPL)程序的向导和类,这使得我们能够在可视化开发环境中非常方便地建立控制面板应用程序。

---- 一、关于控制面板程序

---- 在Windows中,用户通过控制面板来进行增删程序、添加硬件、设置各种系统属性等操作。控制面板中所显示的小程序(或称之为对话框)是由控制面板程序(Control Panel Application)提供的。Windows本身附带了十来个控制面板应用程序,它们都位于Windows的System目录下,扩展名为*.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的文件,它就是我们所要的控制面板应用程序模块。控制面板程序的安装十分简单,只要将CPL文件拷贝到Windows的System目录(或者Windows NT的System32目录)下即可。当你再次打开控制面板时,你所编写的控制面板应用程序就会出现。

金山云杨钢:核心算法保证安全和低成本 加速软件交付 企业级模拟测试服务CA LISA受追捧 盛大云业务重点转向自服务 转战中小型企业:Prediction API请求一个月内飙升至7亿多次 利用光子 耶鲁大学研究人员让量子计算机离现实更近一步 技术为王的云计算会让IT部门消亡么? 从Discuz到APP:安米移动社区转化工具 覆盖全领域:Google、Facebook、Twitter等大师的最佳推荐 苹果CEO宣布更改保修政策 并向中国用户道歉 拒绝使用现有Web组件的6个愚蠢理由 Github宣布支持SVN方式访问 iPad,正在改变什么? Go Mobile:行业大牛谈行业应用开发 亚马逊Cloud Drive新增文件同步功能 对抗Dropbox 35万奖金发放,BlackBerry 10大赛奖项揭晓 超越Google Apps:排行榜前10的相关云应用 荣耀终将消散 全球第一台千万亿次级超级计算机退役 谷歌已推免费Android和iPhone版Quickoffice,微软你呢? 用于响应式设计的9个CSS技巧 微软Surface Pro正式登陆中国市场 售价6588元起 岳雷:Windows Server 2012虚拟化性能提升巨大 陈健:Windows Server 2012让企业轻松管理IT 智能手机:革命已经波及到阴间 兄贵草泥马:重口味单机移动游戏为什么能火? 最炫HTML5框架Famo.us 将免费面向开发者 MySQL到NoSQL:数据的重思和查询方式的转换 程序员心髓:移动应用API设计10大技巧 Netflix公布个性化和推荐系统架构,3种类型作业通实时 从SendCloud到搜狐云 扎克伯格的败笔?Facebook Home可能无家可归 走进eico design,仰视设计师 帮忙看诊断一下遇到的问题。 Fatal error C1010: unexpected end of file while looking for precompiled header directive是什么意思?怎么改正? 关于数据窗口 D3D8的疑問 作动态连接库链接时出错? rLabel的小问题,以后给分. WebSphere 4.0中是否已经直接实现了connection pool CSDN的bug报告:您不能给自己加分...... ORACLE里的中文字符集怎么解决?高分求救!!! 身为一个程序员,谈谈这些年里你所拥有的成功经历!见识一下CSDN牛人总汇! 这是怎么回事呀? asp怎么调用存储过程,主要是参数问题怎么传递 高分,给高分!!! 如何在useradd,增加一个用户的同时,限定这个用户的使用空间 关于内存分配的问题 由金山英文写作助理想到一种木马机制 如何修改Delta数据包中的信息 请问各位哥哥,配置个wu-ftp服务器,一个大目录有一个用户访问,里面的小目录由其它用户访问,怎么配置? 文凭真的这么重要么! 提问关于并发服务器。 关于jbuilder5开发EJB运行容器时的问题,跟帖都有分 请问怎样加一个位图作为Dialog的背景? 写dll链接时出错? 有谁知道windows屏幕保护的通用密码? 请教光标定位 如何使用PFXImportCertStore函数将.pfx文件注册到系统中啊! 有谁知道windows屏幕保护的通用密码 有关JSP运行的问题。分数多多 一个非常菜的问题! 如何利用socket截获80端口的数据? ji.ji.ji... 如何防止内存泄漏001 有谁知道windows屏幕保护的通用密码, xiaoxi777(小溪):请教你刚才的问题 有谁知道windows屏幕保护的通用密码,帮帮忙 在Unicode转换中,_T()与L到底怎么用,有什么区别? 关于利用QQ广告入侵 有没有深圳的阿,我快失业了,哪里要PB程序员啊 有谁知道windows系统的屏幕保护的通用密码 如何自动刷新网页?在线等待! 有谁知道window系统的屏幕保护的通用密码 怎样建设Java服务器?? 我用DELPHI打开了一个FOXPRO表,我想把FOX表的一个数字型字段(N.9.2)的一个数据(99.9)传给DELPHI中的一个变量,问这个变量是什么型的,是string,integer.? 请教Powerdesigner??? 一个ADO的问题,送上38分! 怎样在VB.NET中运行IE 在对话框显示时,怎样得到其位置? 上午62,下午54,有希望不? 关于串口打操作 一个关于InstallShield的小问题 本人朱小军,专门发帖子说有好东东,但是呢,每次都失信,各位,不要再相信我了。进来投一票吧。 硫和铁反应生成什么啊?我们记得怎么是FeS2呢? 不可能有这个吧.. 写出钠与水反应的离子方程式 急~ 谢谢 吃因中毒氰化钾的动物肉会中毒吗如果人吃了因氰化钾中毒的动物的肉会再中毒吗 什么遇到水会产生氧气 水和钠反应的化学方程式 什么动物吃了要中毒 什么样才可以把水分成氧气和氢气 钠与水反应的现象是什么,为什么 中毒死亡的动物肉含毒吗 水分解生成氢气和氧气的变化需要吸收能量,理由是什么? 什么物质含苯多 中毒后的动物什么部位可以吃在其腐烂前的毒死动物 二价铁离子与足量过氧化氢的离子反应式 氰化钠水里的铜怎摸提炼说详细点 关于碳正离子的稳定性.书上说,碳正离子的稳定性取决于碳原子上的正电荷的分散程度。电负性大能使正电荷得到分散,更稳定。可是电负性大的话,不是会吸电子吗?吸的是电子怎么会使 二价铁离子与H2O2反应离子方程式 问懂有机化学的几个问题(都与生成的碳正离子中间体稳定性有关)(1) 比较CH3CH=CHCH3 和H2C=CHCH(CH3)2 两者与H2SO4反应的活性大小(2) CH3CH=CHCH(CH3)2 + H2SO4 →那个H2SO4产生的—OSO3基团到底是加 有机化学碳正离子稳定性看到这样一道题:苯甲酰氯拔掉氯离子生成碳正离子的稳定性优于1-氯丙烷,碳正离子和氧以双键相连,为什么稳定性更强?那碳正离子上连着羟基稳定性又如何呢? 回答下列问题:从煤油中取出一块金属纳,用滤纸吸干表面的煤油后,用小刀切下一小块.切回答下列问题:从煤油中取出一块金属纳,用滤纸吸干表面的煤油后,用小刀切下一小块。切口呈现 碳正离子的稳定性比较(3),请说明理由 做氰化钠 实验 时 怎样防止中毒? 2价铁离子与双氧水反应方程式 关于甲醛释放量标准,急!谁能帮我解释一下:“甲醛释放量:符合国家E1标准”,中的“E1标准”指的是什么?要详细解释啊!最好连同“E0标准”和“E2标准”一起解释下,我会追加分的! 喝氰化钠会是什么反应人会很剧痛吗?会这样吗 回答下列问题:从煤油中取出一块金属纳,用滤纸吸干表面的煤油后,用小刀切下一小块.切口呈现出回答下列问题:从煤油中取出一块金属纳,用滤纸吸干表面的煤油后,用小刀切下一小块.切口 甲醛释放量国家标准我马上要搬家买家具.我想知道各种家具的甲醛的排放标准.比如木地板,衣柜,橱柜,木门.的排放标准. 氰化钠的中毒原理是怎样的?促呼吸停止 铁会和双氧水反应吗?方程式是怎么样的? 氰化钠如何运输?运输固体和液体有何区别? 亲核取代和亲电取代有什么不同呀? 钠与水的反应试验时切取绿豆大小的金属钠用滤纸吸干其表面的煤油滴入两滴酚酞试做钠与水的反应实验时切取绿豆大小的金属钠用滤纸吸干其表面的煤油放入烧杯中滴入两滴酚酞溶液再加 求教:有机化学中碳正离子重排的问题.医学生正在学有机化学,碳正离子重排在什么情况下碳架不能改变只能发生电子的转移,什么情况下碳架可以发生改变.看到有些反应碳架改变重排成最稳 亲核取代反应、亲电取代反应、亲核加成反应和亲电加成反应的区别? 遇水散热的物质有什么在化学物质中 什么物质遇水会散发大量热量 哪些塑料是含苯的,哪些塑料是不含苯的?请具体列出 要装50吨的液体氰化钠需要多大的灌希望知道的朋友帮帮忙 在下感激不尽 亚硫氢酸离子能与氢离子共存吗 软苯是什么塑料?代号?有人说HIPS再生过程可以加入软苯使它韧性更强一点,请问软苯究竟是什么?它的代号是什么?就是想知道软苯的代号!分不多希望懂的朋友说一下 苯甲醇,苯甲醛对身体危害大吗?但它们不是经常使用于香精,化妆品的制作上吗 什么物体遇水即化 铁与双氧水反应方程式 长期和苯甲醛类气体接触应怎么预防其危害?都是做这一类气体的化验工作,所以长期与此类气体接触! 如何判断分子中所有原子是否处在同一平面?再分析下苯和乙烯 过氧化氢H2O2和亚铁离子Fe2+怎么反应 怎么永远去除手机套的苯,甲醛等有害物质? 联二苯分子中处于同一平面的碳原子最少是多少个?最多是多少个? H2O2是否能将铁离子与亚铁离子相互转换,要有方程式 2.4.6三甲基苯甲醛化学性质以及对人体的危害最好能有2.4.6三甲基苯甲醛的化学品安全技术说明书 苯所有原子在同一平面么 苯、正丙醇与水能分层吗苯、正丙醇与水混合溶液能分层吗 氰化钠提金会产生什么气体如果吸入这种气体中毒了怎么解毒 苯的所有原子一定都在同一个平面上?有没有可能某些氢原子不在6个碳确定的平面上?碳氢键不是可以旋转的吗?这样的话,某个氢原子就可能不在碳平面上了. 苯与正丙醇反应的产物是什么呢(酸性条件下)? 乙醛和苯甲醛的反应是哪一个键断裂加成到哪个键上?先行谢过啦! 硫与铁怎么反应 正丙醇 有毒吗 苯甲醛 氢气 反应式 铁和硫反应生成: 反应现象:初中科学哦!! 钠与水反应的原因 两个苯甲醛分子之间能发生什么反应是氧化还原反应
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn