NOTIFYICONDATA结构-飞外

NOTIFYICONDATA m_notifyData;

m_notifyIcon.ChangeIcon(IDI_PAUSE, _T("监控终端server已暂停"));

void CMyNotifyIcon::AddIcon(UINT idResourceIcon, LPCTSTR tip)
{
HICON hIcon = AfxGetApp()- LoadIcon(idResourceIcon);
ASSERT(hIcon != NULL);

m_notifyData.hIcon = hIcon;
wsprintf(m_notifyData.szTip, _T("%s"), tip);

m_notifyData.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;

Shell_NotifyIcon(NIM_ADD, m_notifyData);
}

---- NOTIFYICONDATA结构包括了系统用来处理托盘图标的信息,它包括选择的图标、回调消息、提示消息、图标相应的窗体等内容。其定义为:

typedef struct _NOTIFYICONDATA {

DWORD cbSize;

//以字节为单位的这个结构的大小

HWND hWnd;

//接收托盘图标通知消息的窗体句柄

UINT uID; //应用程序定义的该图标的ID号

UINT uFlags;

//设置该图标的属性

UINT uCallbackMessage;

//应用程序定义的消息ID号,此消息传递给hWnd

HICON hIcon;

//图标的句柄

char szTip[64];

//鼠标停留在图标上显示的提示信息

} NOTIFYICONDATA, *PNOTIFYICONDATA;

该结构中,成员uFlags能够使下列之中的一个或组合:

NIF_ICON 设置成员hIcon有效

NIF_MESSAGE 设置成员uCallbackMessage有效

NIF_TIP 设置成员szTip有效

---- 二、Shell_NotifyIcon函数

---- 全局函数Shell_NotifyIcon() 用于在托盘上添加、删除或改动图标。其原型为:

WINSHELLAPI BOOL WINAPI

Shell_NotifyIcon( DWORD dwMessage,

PNOTIFYICONDATA pnid);

---- Pnid是上面的NOTIFYICONDATA结构的指针; dwMessage是被传递的消息,能够是下面消息之中的一个:

NIM_ADD 添加图标

NIM_DELETE 删除图标

NIM_MODIFY 改动图标

---- 为使应用程序退出时图标消失,映射WM_DESTROY消息,在OnDestroy()函数中增加:

::Shell_NotifyIcon(NIM_DELETE, m_tnid);