//农机调度项目代码
NOTIFYICONDATA m_notifyData;
m_notifyIcon.ChangeIcon(IDI_PAUSE, _T("监控终端服务器已暂停"));
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);