MFC 托盘设计注意:
关键函数之一 BOOL Shell_NotifyIcon( DWORD dwMessage,NOTIFYICONDATA lpdata);
包含头文件:shellapi.h
首先是第一个参数dwMessage,
可以取下面两个值:
#define NIM_ADD 0x00000000//这个会添加一个图标到系统托盘处此时第二个参数lpdata指向的NOTIFYICONDATA结构体中的hWnd和uID成员用来标示这个图标,以便以后再次使用Shell_NotifyIcon对此图标操作
#define NIM_MODIFY 0x00000001//修改托盘区域的一个图标此时第二个参数lpdata指向的NOTIFYICONDATA结构体中的hWnd和uID成员用来标示需要被删除的这个图标。
#define NIM_DELETE 0x00000002//我们用这个删除系统托盘处的图片此时第二个参数lpdata指向的NOTIFYICONDATA结构体中的hWnd和uID成员用来标示需要被修改的这个图标。
#if (_WIN32_IE >= 0x0500)
#define NIM_SETFOCUS 0x00000003//Version 5.0. 设置焦点比如当用户操作托盘图标弹出菜单,而有按下ESC键将菜单消除后,程序应该使用此消息来将焦点设置到托盘图标上。
#define NIM_SETVERSION 0x00000004//Version 5.0. 设置任务栏按照第二个参数lpdata指向的NOTIFYICONDATA结构体中的uVersion成员指定的版本号来工作
NOTIFYICONDATA 是一个函数公式主要含义和作用是以此函数用来向任务栏托盘区域发送消息。
typedef struct _NOTIFYICONDATA {
DWORD cbSize;//
结构体的大小,以字节为单位。注意本身结构
HWND hWnd; //
窗口的句柄标,示的窗口用来接收与托盘图标相关的消息。
UINT uID; //
应用程序定义的任务栏图标的标识符
UINT uFlags;//
此成员表明具体哪些其他成员为合法数据(即哪些成员起作用)
UINT uCallbackMessage;
//应用程序定义的消息标示。当托盘图标区域发生鼠标事件或者使用键盘选择或激活图标时,
//系统将使用此标示向由hWnd成员标示的窗口发送消息。消息响应函数的wParam参数标示了消息事件发生的任务栏图标,
//lParam参数根据事件的/不同,包含了鼠标或键盘的具体消息,例如当鼠标指针移过托盘图标时,lParam将为WM_MOUSEMOVE。
HICON hIcon;//
增加、修改或删除的图标的句柄
TCHAR szTip[64];//
指向一个以\0结束的字符串的
指针
DWORD dwState;//Version 5.0,图标的状态,有两个可选值,如下:NIS_HIDDEN图标隐藏 NIS_SHAREDICON图标共享
DWORD dwStateMask;//
Version 5.0. 指明dwState成员的那些位可以被设置或者访问
TCHAR szInfo[256];//
Version 5.0. 指向一个以\0结束的字符串的
指针
union {
UINT uTimeout;//
uTimeout表示气球提示超时的时间
UINT uVersion;//
只有当使用Shell_NotifyIcon函数发送NIM_SETVERSION消息时,此成员才有作用
};
TCHAR szInfoTitle[64];//
Version 5.0. 指向一个以\0结束的字符串的指针
DWORD dwInfoFlags;
//Version 5.0. 设置此成员用来给气球提示框增加一个图标。增加的图标出现在气球提示标题的左侧,注意如果szInfoTitle成员设为空字符串,则图标也不会显示。可选值如下:
NIIF_ERROR错误图标。NIIF_INFO信息图标。NIIF_NONE没有图标。NIIF_USER使用用户使用hIcon成员指明的图标,要求Windows XP Service Pack 2 (SP2)或以后系统。
NIIF_WARNING警告图标。NIIF_ICON_MASK Version 6.0. 保留。NIIF_NOSOUND
GUID guidItem;//Version 6.0. 保留。
} NOTIFYICONDATA, *PNOTIFYICONDATA;