【发布时间】:2011-07-17 06:06:52
【问题描述】:
我希望我的应用程序在 Windows 7 的通知区域中有一个图标。我使用 Shell_NotifyIcon 添加图标。图标出现了,但是当我将鼠标指针放在图标上时,图标消失了。该应用程序一直在运行。图标没有隐藏,只是消失了。
Shell_NotifyIcon 返回一个非零值,表示成功。
以下是相关代码:
static const int ID_TRAYICON = 300;
static const int MSG_TRAYICON = WM_USER + 1;
NOTIFYICONDATA nid;
void InitTrayIconData()
{
memset(&nid, 0, sizeof(NOTIFYICONDATA));
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = hwnd;
nid.uID = ID_TRAYICON;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.uCallbackMessage = MSG_TRAYICON;
nid.hIcon = LoadIcon(nullptr, IDI_APPLICATION);
//nid.uVersion = NOTIFYICON_VERSION_4;
lstrcpy(nid.szTip, TEXT("Data Aggregator in-dev version"));
}
然后在处理 WM_CREATE 消息时:
InitTrayIconData();
Shell_NotifyIcon(NIM_ADD, &nid);
在处理 WM_DESTROY 时:
Shell_NotifyIcon(NIM_DELETE, &nid);
我还注意到,由于某种原因,MSG_TRAYICON 消息从未被调用。
【问题讨论】: