用C++Builder编写Tray程序

用C++Builder编写Tray程序,第1张

用C++Builder编写Tray程序,第2张

托盘(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();//从托盘中删除图标

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 用C++Builder编写Tray程序

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情