2009-05-23 10 views
3

Es ist sehr einfach zu erzwingen, ein Taskleistensymbol, um eine Sprechblase QuickInfo anzuzeigen: alles, was ich tun muss, ist das Setzen der NIF_INFO Flag beim Aufrufen von Shell_NotifyIcon (NIM_MODIFY, ...), und die Sprechblase erscheint, kein Problem.Wie kann man eine Taskleiste nach Belieben ausblenden?

Nun möchte ich den Ballon verstecken können, wenn ich ihn auch nicht mehr brauche, aber ich kann keinen Weg finden, das zu tun. Ich habe versucht, das NIF_INFO-Flag zu löschen und Shell_NotifyIcon (NIM_MODIFY, ...) aufzurufen, aber der Ballon blieb. Es verschwindet ein paar Sekunden später von alleine, aber das ist nicht was ich will: Ich möchte es sofort verstecken, wenn mein Programm denkt, dass es versteckt sein sollte.

Die einzige Möglichkeit, den Ballon verschwinden zu lassen scheint zu sein, das Symbol zu zerstören und dann wieder in die Taskleiste einzufügen, aber es ist hässlich.

Ist es möglich, die Sprechblase auszublenden, ohne das Taskleistensymbol neu zu erstellen? Vielen Dank.

Antwort

4

sofort auf einen Ballon, setzen Sie das szInfo Mitglied des NOTIFYICONDATA auf einen leeren String, wie nid.szInfo[0] = 0; und rufen Shell_NotifyIcon(NIM_MODIFY, &nid) zu verstecken.

+0

Scheint nicht unter Windows 10 zu funktionieren. – Paul

3

Ich würde anbieten, dass es nicht wirklich im besten Interesse des Benutzers ist, eine Benachrichtigung Ballon gewaltsam zu entfernen. Manchmal schaut ein Benutzer nicht sofort auf eine Benachrichtigung, und diese langsame Verblassung, die sich über ein paar Sekunden ereignet, gibt ihnen die Möglichkeit, einen Blick darauf zu werfen, bevor die Sprechblase weg ist. Aus Sicht der Benutzerfreundlichkeit sollte die Anzeige der Sprechblase in der Verantwortung der Anwendung liegen, aber die Entfernung des Sprechblase sollte wirklich in der Verantwortung des Benutzers liegen. Andernfalls könnten Sie Informationen verbergen, die sie eigentlich sehen wollten, und indem Sie sie sofort sofort verstecken, entfernen Sie die "letzte Chance", die der Benutzer während der Ballons hat, vollständig.

+0

Sie haben Recht, dass der Ballon in einigen Fällen an Ort und Stelle bleiben sollte, um dem Benutzer Zeit zu geben, ihn zu überprüfen, aber es gibt viele Fälle, in denen die Entfernung des Ballons eine bessere Erfahrung bieten sollte. Angenommen, ich möchte den Benutzer informieren, dass mein Programm versucht, eine Verbindung zu einem Server herzustellen. Die Verbindung kann nur eine Sekunde dauern, nach dieser Zeit hat es keinen Sinn mehr, die Verbindung zum Server aufrecht zu erhalten. In der Tat kann es den Benutzer verwirren: Die Verbindung wurde bereits hergestellt, aber die Sprechblase sagt "connecting ...", sollte es etwas mit dem Programm falsch sein? –

+4

Anstatt also den Ballon zu verstecken, ändern Sie den Text so, dass er "Verbunden" sagt. und erlauben Sie dem Benutzer noch, es selbst zu schließen. ;) – jrista

+0

Das ist eine gute Idee, danke! –