Значок, добавленный в панель уведомлений, исчезает при нажатии на мышь over

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

5
задан Puppy 17 July 2011 в 11:05
поделиться