用C++ Builder编写Tray程序
Tray(托盘)是Windows9x任务条上的一个特殊区域,它的技术名称为“任务栏布告区”,一些软件(如金山词霸Ⅲ)运行时会在托盘上放置一个图标,使用户一眼就能知道这个程序正在后台运行,要想激活它也很容易,通常只需单击一下这个图标即可,非常方便。 Tray的编程比较特殊,但并不难,主要包括图标、工具提示和消息等三个方面,它是Shell编程的一部分。ShellAPI提供了Shell—NotifyIcon函数,用它可以增加、删除或者修改托盘中的图标,在托盘上放置图标后,Windows Shell会负责把发生在图标上的鼠标事件通知应用程序。Shell—NotifyIcon函数定义如下: WINSHELLAPI BOOL WINAPI Shell—NotifyIcon(DWORD dwMessage,PNOTIFYICONDATA pnid); dwMessage表示要完成的操作:NIM—ADD(增加图标)、NIM—DELETE(删除图标)、NIM—MODIFY(修改图标或提示文本),pnid是一个指向NOTIFYICONDATA结构的指针,结构的定义如下:
下面我们就通过一个具体例子来说明实现方法,程序运行时不会显示主窗体,只在托盘上增加一个图标,双击图标可关闭程序。 程序运行时托盘区显示如下: 新建一个工程,放置一个Timer控件到窗体上。打开unit1.***件,增加头文件说明#include <shellapi.h>,在TForm1定义的private段增加一些数据成员和方法的声明: unsigned int iconmessage;//定义的消息 void AddTrayIcon();//在托盘上增加图标 void RemoveTrayIcon();//从托盘中删除图标 由于要增加对自定义消息的处理,所以必须重载窗口过程函数WndProc,在TForm1的定义中增加protected段:virtual void ——fastcall WndProc(Messages::Tmessage& Message); 在unit1.cpp中定义相应的成员函数:
重载TForm1的WndProc函数,加入对自定义消息的处理代码,这其实相当于创建了TForm类的子类。
创建窗体的OnCreate事件句柄:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |