Quiero que mi aplicación tenga un ícono en el área de notificación en Windows 7. Utilicé Shell_NotifyIcon para agregar el ícono. Aparece el ícono, pero cuando coloco el puntero del mouse sobre el ícono, el ícono desaparece. La aplicación se ejecuta todo el tiempo. El ícono no está oculto, simplemente desaparece.El icono agregado a la bandeja de notificaciones desaparece en el mouse sobre
Shell_NotifyIcon devuelve un valor distinto de cero, lo que significa que tiene éxito.
Aquí está el código correspondiente:
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"));
}
Entonces al procesar el mensaje WM_CREATE:
InitTrayIconData();
Shell_NotifyIcon(NIM_ADD, &nid);
Y al procesar WM_DESTROY:
Shell_NotifyIcon(NIM_DELETE, &nid);
También he notado que para algunos razón por la cual nunca se llama al mensaje MSG_TRAYICON.
Tuve exactamente el mismo problema, gracias por apuntarme en la dirección correcta. – quantum