Я хочу, чтобы у моего приложения был значок в области уведомлений в 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 никогда не вызывается.