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

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目录)下即可。当你再次打开控制面板时,你所编写的控制面板应用程序就会出现。

里程碑:iPhone与Android企业用户市场首次超过黑莓 VMware最快下周宣布分拆Cloud Foundry 国际原子能机构服务器遭窃 百多位专家信息泄密 用户可通过Google Drive直接向Gmail添加高达10GB的文件 韩寒携个人App进军移动互联网 亮相应用汇独家发布会 摆脱谷歌 亚马逊向开发者正式发布地图API 为什么应该用模块取代C/C++中的头文件? Mozilla布道师:HTML5在移动端没有未来? 那些年,历史上留下浓重一笔的黑客们 林敏博士:透过设计看三星手机帝国崛起 OpenFeint血泪史:我们是如何被苹果逼死的 或免费升级:微软2013年推Windows Blue系统 取经:《捕鱼达人2》每月捞金160万美元的秘密 AWS推数据仓库服务Redshift 价格仅是Teradata IBM Oracle的十分之一 美国开展数据中心整合计划 简化政府IT运营 阿里巴巴数据交换平台——集大成于一身 [体验]Windows 8 Metro/Modern Style IE 10 Growth Hacker正席卷全球,你了解它吗? Splashtop发布Ubuntu Linux版本Streamer 性能超过VNC 10倍 Windows 8引领智能操作 人机交互进入触控时代 豌豆荚发布新版应用搜索 推出“绿色标签”机制 权威解读:苹果的未来将走向何方? Google炮轰Facebook:你们的社交已经过时了! iOS设备硬件规格完整汇总 2012 MDCC“2012移动互联网应用创新大赛与开发者面对面”专场:创所未享,携手逐梦! RIM携QNX为“2012 BlackBerry平台移动应用高校竞赛” 颁奖 BlackBerry 10 策略:用金钱吸引游戏开发者 黑莓10要来了:RIM正式开放应用提交 从RIM与微软达成exFAT授权所想到的 OpenStack中国行来到南京 中兴通讯分享电信行业应用 CSS架构目标:预测、重用、扩展、维护 使用ICS共享上网,ICS会自动给客户机分配IP,如何知道这个IP是多少? 一个控制窗体不能通过鼠标改变大小的问题 这是什么 wrox 的书的源码下载怎没有-up有分 求助,JSP+Crystal Report9.22问题。怎么导出EXCEL格式 CSDN的朋友,您如果有时间,给我写一个,快速傅立叶变换的程序把。 二叉树问题 谁对zope,cmf 有研究,谈谈设计思路? 问一下用过VB的人几个问题,谢谢先 关于显示千分位的问题 win98拨号服务器问题 你竟然不回我的短信! 如何在Datagrid的最后追加一行,这一行放多个文本框,用来添加新数据 谁有可垂直居中的QRLabel? 怎样通过程序模拟网页post数据到一个servlet? wrox 的书的源码下载怎没有-up有分 《我们共同的容闳》专辑明天在央视国际频道播出 程序发布问题,大哥大姐来帮忙呀 在线咨询:用ATL做ActiveX控件,能不能让控件是个多文档界面程序。 谁记得这道题是怎么解答的? 申请www开头的域名都是收费的吗 苦恼!考研还是工作! 短信产品:CMPP接口、SGIP接口、CMPP代理网关、计算机与手机连接的短信群发 你是不会知道的!! acrobat pdf 不能打印 怎样使程序发生异常时不弹出带红叉的窗口,异常可采用日志文件记录? 我下载了mysql-3.23.57-win.zip 安装在win2k server下为何不能用? 妹妹求救:用什么软件可以编辑.dll文件! 帮帮忙 高分求VS.NET2003正版中文版下载 XML数据导入到SQL Sever数据库 IIS运行不了ASP.NET文件,怎样做呢? oracle8i安装问-在线等待-急 怎么开启dbms_output的功能。 如何批量运行插入语句??? 数据库输出的问题 关于DELPHI 与 .NET 怎么样可以使CStatic类定义的对象变成灰白的,即disabled掉,不准在资源中改。 请教一个关于文件的问题~~ 如何将UTF-8的编码变成gb2312的编码 为什么用ADOQUERy进行查询,时间超过40秒时便出现超时连接 说说 中秋你们那是怎么过的? 两天都没摆平的问题,各位帮忙看一下。我给大家唱小曲儿啦:) 向大力请教! 一点小问题 车票精确打印 深夜,你会为谁开着手机? 新手提问:日期时间无法完全显示:? 如何把位图,字体,图标资源保存在Dll动态库中,以便让不同的Windows应用程序共享 散分了300分~高兴,朋友的网站访问者有分~不够在加!!!!!!!!!!一定给分! 寻找网站后权限的解决方案---在线等待 替字可以家什么偏旁除了3点水旁 请问成考大学语文的作文,要求写以议论为主的文章是什么意思?是必须是议论文还是别的, 以“握”字结尾的句子 英语翻译这里的over该如何解释 over the centuries怎么翻译? over the last seventeenth centuries的翻译 作文:这句话惊醒了我(和练钢琴有关的) 汉语拼音wang xie qian用韦氏拼音怎么拼?如题,不要韦氏拼音的用法,只要拼出来wang xie qian就好了 Stuyvesant HS:345 Chambers Street New York,NY 10282-1000 全部翻译为汉语 钿 怎么读... 怎样写好成考小作文成考小作文也不能忽视,可是该注意哪些方面才能的高分呢? 美国务卿说政府关门损害美国际声誉手机疑遭美监听 默克尔怒了中国保姆在美国年薪10万美元 保险假阿拉法特死因有新说 排除钋中毒BBC名主播再添性侵罪名 下月受审【新加坡供需两方面给房市降温 房价调控沙特惊人外交之举引争议美国情报机构被曝监听至少35名国际政新加坡房价调控缘何显成效中国周边外交换挡升级外国人如何申请中国绿卡津14日元宵销售10万斤 与往年相比放弃休假全员返疆 援疆干部元宵节坚守不一样的情人节礼物:小伙扛女友步行3深圳一处长开公车去打高尔夫 纪委:会马拉多纳私生女被藏18年曝光 母亲曾解放军报:军事题材电视剧不应忽视部队深圳警方今年将深化居住证制度改革冰上再无“冰王子”马年去坂田看汉代玉马车孙坚晒与周笔畅合影引猜测网友起哄笔笔24小时官纵商横人兽编年史来自东方的男人被诅咒的左手是你我不会撒手美腿追杀令江湖奇人录超级变态狂狗分身别拿恋爱当靶子武道破万法大吸盘水圳旅游九如山瀑布群旅游红叶谷旅游灵岩寺旅游千佛山旅游白石泉旅游黄沙古渡旅游玉皇阁旅游凤凰碑旅游东望洋炮台旅游台北动物园旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘