靖拍睿?
Windows 95 Task Bar实际上是一个标准控制。控制和操纵它就是与它用消息通信,这与其他的标准控制一样。
一. 下面是有关的结构与函数:
1.仅有的一个结构:
// (From SHELLAPI.H)
typedef struct _NOTIFYICONDATA
{
DWORD cbSize; // size of struct, you must set
HWND hWnd; // HWND sending notification,是你
程序中
//将要接收Task Bar消息的窗口
UINT uID; // ID of icon (callback WPARAM)
//一个程序可以有多个Icon,此参数用作标识
//一般用Icon的资源ID
UINT uFlags; //低三位有意义,0--7,如下:
//第一位//#define NIF_MESSAGE 0x1 // uCallbackMessage参数有效
//第二位//#define NIF_ICON 0x2 // hIcon is valid参数有效
//第三位//#define NIF_TIP 0x4 // szTip is valid参数有效
UINT uCallbackMessage; // sent to your wndproc
//WM_USER+? 一定不要与以有的消息相重。
HICON hIcon; // handle of icon
//显示在TaskBar上的Icon的句柄,可以为系统的:IDI_HAND
CHAR szTip[64]; // Tooltip text
} NOTIFYICONDATA;
2.与Task Bar通信的函数只有一个:
Shell_NotifyIcon (UINT message, NOTIFYICONDATA &tnd);
message可以取以下值:
NIM_ADD Adds an icon to the taskbar notification area
NIM_MODIFY Modifies an icon in the taskbar notification area
NIM_DELETE Deletes an icon from the taskbar notification area
二.一般步骤
一般将NOTIFYICONDATA utd 的cbsize,hWnd,uID,
UFlags(一般为7,表示三个参数均有效),uCallbackMessage,hIcon,szTip.
然后调用:Shell_NotifyIcon (NIM_ADD,&utd);
若要实现Icon
动画,则可以用不同的hIcon调用
Shell_NotifyIcon (NIM_MODIFY,&utd);
程序终止时调用:
Shell_NotifyIcon (NIM_DELETE,&utd);
三.程序如何响应Task Bar的通知当用户在你的Icon上移动,点击,等等动作时,Task Bar会向你的程序发送如下的消息? br>
messageID =uCallbackMessage
wParam=uID
lParam =mouse event (如:WM_LBUTTONDOWN)
你的程序当收到uCallbackMessage消息时,提取出uID和mouse event, 就可以执行相关的响应。很简单啦。
利用上面的知识,就不难在C,VB,VC中实现。