Delphi中实现多程序图标一法
2006-03-07 22:41
232 查看
Delphi中实现多程序图标一法
(文档类别:Delphi) 2001-9-24摘 要:Delphi中实现多程序图标一法 关键字:图标 类 别:用户界面 在Delphi中我们可以静态或动态地创建窗体,所谓静态创建窗体是指在设计程序时一并建好窗体,动态创建是指在程序运行时根据需要使用Create方法创建新窗体,然后使用Show方法来显示窗体。但令人遗憾的是,在显示非启动窗体时,不论用户在程序中创建多少个窗体,每个应用程序只能有一个程序图标,在Windows的任务条上只显示一个程序图标。 在编写应用程序时,有时我们需要同一应用程序显示两个程序图标,那么如何实现呢?我们只需重载窗体的CreateParams过程即可实现,下面以一个示例来说明如何使用。 一、应用实例 在Delphi集成环境中创建两个窗体,其中窗体一为主窗体,即程序启动窗体,在其上添加显示窗体二的按钮。因为要让窗体显示的同时在任务栏上再显示一个程序图标,为了区别,将窗体二的图标更换,然后在窗体二的private部分声明重载CreateParams过程: unit Unit2; …… private { Private declarations } procedure CreateParams(var Params: TCreateParams); override; 最后在单元文件的实现部分(Implementation)添加重载过程的实现代码: procedure TForm2.CreateParams(VAR Params: TCreateParams); begin Inherited CreateParams(Params); Params.WndParent := GetDesktopWindow; end; 运行程序中,当按下启动窗体中的“显示窗口二”按钮时,会显示窗体二,并且在Windows的任务栏上同时会出现一个新的程序图标,如图1所示。 二、程序分析 当程序需要创建一个窗体、向系统发出要创建一个新窗体的WM_CREATE消息时,系统将指示程序调用CreateWnd方法来创建窗体,CreateWnd方法在创建窗体前,需要调用CreateParams过程来获得窗体的初始化参数,在获得这些参数后,最后再调用CreateWindowHandle方法创建一个窗体句柄,完成了一个窗体的创建工作。因此,如果我们要使某一窗体在任务栏上显示程序图标,就需要修改窗体的初始化参数,重载CreateParams过程。 程序窗口的初始化参数被封装成一个TCreateParams类型的对象,该类型的定义如下所示: type TCreateParams = record {窗体的标题文字} Caption: PChar; {窗体的类型,比如WS_CHILD 、WS_DISABLED等} Style: DWORD; {扩展的窗体类型} ExStyle: DWORD; {窗体的左上角位置} X, Y: Integer; {窗体的宽、高} Width, Height: Integer; {该窗体的父窗体句柄} WndParent: HWND; {指向WM_CREATE消息LParam参数} Param: Pointer {该类包含了一些与窗体有关的信息,如鼠标光标、选单等} WindowClass: TWndClass; {该窗体的类名} WinClassName: array[0..63] of Char; end; CreateParams过程是当窗体创建时执行,它初始化窗体创建的参数记录。所以如果要显示某一窗体的图标,必须要提高该窗体的级别,即将它的父窗体置为Windows的桌面,桌面的句柄可以通过API函数GetDesktopWindow来获得,因此只要我们在重载函数体中添加语句“Params.WndParent := GetDesktopWindow;”,就可以实现窗体的图标显示,正如上例所演示的那样。 |
相关文章推荐
- 一个app,多个入口图标,activity-alias实现多程序入口并显示指定view完成
- MFC中提示对话框的滑动弹出和程序图标加入系统托盘的实现
- Delphi编程实现程序快捷方式
- C# WinForm实现任务栏程序图标闪烁
- SWT 中实现最小化到托盘图标,并只能通过托盘的弹出菜单关闭程序
- paip.提升用户体验------c++ Qt5 实现程序图标以及动态托盘闪烁图标
- [代码]Delphi实现检测程序是否在VMWare中运行
- Windows系统托盘图标程序之Java实现
- 『原创』c#实现文件加密、解密及文件拖拽至程序图标直接打开
- Delphi 实现程序 动态 类名
- Delphi 实现卸载Windows应用程序(类似360软件管家-卸载程序)
- C#实现ICON图标的转换程序介绍
- 在delphi程序中实现QQ用户的Web登陆并获取个人信息
- 浅谈c#实现隐藏任务栏图标的Windows托盘程序
- 利用Delphi实现系统状态栏图标
- Delphi 程序窗口动画及正常排列平铺的实现
- 实现将程序图标显示在系统托盘
- 在Delphi 中用程序实现自定义窗体的创建和显示顺序(1)
- 程序自动自我更新的delphi实现
- 托盘程序的实现(delphi的消息处理函数)