用C++Builder编写Tray程序
托盘(Tray)是Windows9x的任务栏上的一个特殊区域,它的技术名称是“任务栏公告牌”。有些软件(比如金山三代)在运行的时候,托盘上会放一个图标,让用户一看就知道这个程序在后台运行。激活它也很容易,通常只需点击这个图标,非常方便。
托盘的编程比较特殊,但并不难。主要包括图标、工具提示和消息。它是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结构的指针,定义如下:
typedef结构—NOTIFYICONDATA{
DWORD cbSize//结构占用的字节数必须用结构的大小初始化。
HWND hWnd//接受托盘图标消息的窗口句柄
UINT uID//由应用程序定义的图标ID
UINT uFlags//用于标识那些值需要更改的字段。NIF图标表示图标有效,可用于修改图标。NIF消息指示uCallbackMessage有效,用于定义消息。NIF-提示指示szTip参数有效,并且工具提示可以修改。
UINT uCallbackMessage//由应用程序定义的消息
HICON hIcon//托盘图标的句柄
char SZ tip[64];//工具提示的文本
} NOTIFYICONDATA
下面通过一个具体的例子来说明实现方法。程序运行时不会显示主窗体,只会在托盘上添加一个图标,双击图标关闭程序。
当程序运行时,托盘区域显示如下:
创建一个新项目,并在窗体上放置一个计时器控件。打开unit1.h文件,添加头文件description # #include,在TForm1定义的私有节中添加一些数据成员和方法的声明:
未签名的int iconmessage//定义的消息
void AddTrayIcon();//将图标添加到任务栏
void RemoveTrayIcon();//从托盘中删除图标
位律师回复
0条评论