如何在Windows的任务栏的托盘上加一个快捷图标

来源:互联网 发布:超级基因优化 编辑:程序博客网 时间:2024/05/01 20:21
Tray中文直译为“托盘”,不过我个人认为译作“状态区”也许更好。Tray也称作SysTray、TrayIcon、NotifyIcon、Status Area等,它是Windows 95/NT的任务条上一个特殊区域(下图),许多软件运行时在Tray中加入自己的图标,如果用户点击这个图标,软件会实现相应的功能,如果用户鼠标箭头在图标上停留,Windows 95会显示出相应的工具提示(ToolTip)。这个区域的另一个特殊之处在于你可以从资源管理器内拖文件然后放在这个区域。正是由于这些特性,Tray编程在Windows 95/NT中有特殊的地位。
    
    Tray编程主要包括三个主要方面:图标、工具提示和消息。它属于Shell编程的一部分,主要是利用Shell API中的Shell_NotifyIcon函数完成的。Shell_NotifyIcon函数是这样定义的:
     WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
     DWORD dwMessage, // message dentifier
     PNOTIFYICONDATA pnid // pointer to structure
     );
    dwMessage有三种取值:NIM_ADD、NIM_DELETE和NIM_MODIFY,分别表示添加、删除和修改指定的图标。pnid 是一个指向NOTIFYICONDATA 结构的指针,它的内容因dwMessage参数而异。NOTIFYICONDATA 结构的定义如下:
     typedef struct _NOTIFYICONDATA { // nid
     DWORD cbSize;// 结构所占的字节数
     HWND hWnd; // 接受Tray图标消息的窗口句柄
     UINT uID; // 由应用程序定义的图标识别符
     UINT uFlags; // 标志
     UINT uCallbackMessage; // 应用程序定义的消息
     HICON hIcon; // Tray图标的句柄
     char szTip[64]; // 工具提示字符串
     } NOTIFYICONDATA;
    这个结构中的uFlags很重要,它有三种取值:NIF_ICON、NIF_MESSAGE和NIF_TIP,分别表示hIcon、uCallbackMessage和szTip参数有效,用来修改图标、消息和工具提示。这三个取值可以同时使用(三个参数相或),也可以单独使用。为了实现对用户鼠标操作的响应,需要在程序中处理uCallbackMessage所定义的消息,该消息的长参数lParam包含Win32所定义的鼠标消息,如果有多个图标,短参数wParam表示图标识别符。在Borland C++ 5.0的EXAMPLES/WIN95/TRAYNOT目录下有一个简单的示例程序(这是Win32 SDK的示范程序,一般的C语言软件包都包括此程序)详细地展示了具体操作,参照前面的介绍,相信你可以轻松地完成自己的程序。
原创粉丝点击