Zum erweiterten Funktionsumfang gehören auch neue Nachrichtenwerte, die unserer eigenen TNA-Nachricht als Teil des lparam-Wertes übergeben werden. So können wir z.B. auf das Erscheinen und Verschwinden des Balloon-Tipp reagieren:
case uMsg of
WM_TNAMSG:
case lp of
NIN_BALLOONSHOW:
MessageBox(0,'I see the balloon! :o)',szClassname,
MB_OK or MB_ICONINFORMATION);
NIN_BALLOONHIDE:
MessageBox(0,'Itīs gone ... :o(',szClassname,
MB_OK or MB_ICONINFORMATION);
end;
end;
Die Nachricht "NIN_BALLOONHIDE" wird z.B. beim Entfernen des TNA-Icons gesendet, sofern der Tipp dabei noch zu sehen ist. Ein Mausklick und der Timeout lösen stattdessen die Nachrichten "NIN_BALLOONUSERCLICK" bzw. "NIN_BALLOONTIMEOUT" aus (wie Sie im Beispielprogramm sehen können).
Dem PSDK und dem MSDN zufolge kann man die Art und Weise der Benachrichtigung mit Hilfe der Anweisung "NIM_SETVERSION" einstellen. Zur Auswahl hat man das Verhalten der Version 5.0 bzw. der Vorgängerversion:
NID.uVersion := NOTIFYICON_VERSION; // Use the Windows 2000 behavior
Shell_NotifyIcon(NIM_SETVERSION,@NID);
Die Alternative wäre der Wert Null ("Windows 95 behavior"). Ich gehe aber davon aus, dass durch die Nutzung der erweiterten Funktionalität automatisch auch die Benachrichtungsart geändert wird. Lässt man nämlich diese beiden Zeilen weg, kann man trotzdem die o.g. Nachrichten bearbeiten. Nur darauf verlassen sollte man sich nicht unbedingt.