我希望我的应用程序在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消息从未被调用。
我有完全相同的问题,谢谢指出我在正确的方向。 – quantum