Notifyicondata

Dieses Thema Notifyicondata im Forum "Windows XP Forum" wurde erstellt von killer-Trekkie, 24. Sep. 2005.

Thema: Notifyicondata Hi, ich habe ein Programm geschrieben, dass bei mir im Tray läuft. Das gnaze läuft auch sehr gut, allerdings bin...

  1. Hi,

    ich habe ein Programm geschrieben, dass bei mir im Tray läuft. Das gnaze läuft auch sehr gut, allerdings bin ich bei der Anwendung auf zwei Details aufmerksam geworden. Und zwar:

    1) Hätte ich es gerne, dass wenn ich bei dem Programm auf den Minimierenbutton clicke, das Programm im Tray verschwindet

    und

    2) Wenn ich mit der rechten Maustaste auf das Trayicon clicke, erscheint ein PopupMenu. Das Problem ist jetzt, dass wenn ich das wieder weg haben will, ohne auf ein Item im Menu geclickt zu haben, funzt dat net. Also: Wie bekomme ich es hin, dass wenn ich nicht auf das Popupmenu clicke, das selbige wieder verschwindet?

    Wäre toll, wenn mir jemand helfen könnte.

    MFG

    killer-Trekkie
     
  2. Verschwinden lassen:
      ShowWindow(hWindow, SW_HIDE) bei WM_SYSCOMMAND, SC_MINIMIZE.
    Verschwinden lassen, wenn das Fenster minimiert ist:
      ShowWindow(hWindow, SW_HIDE) bei WM_SIZE, SIZE_MINIMIZED, denke ich mal.
    In Richtung Tray animieren:
      Das müsstest du von Hand machen, würde ich sagen. DrawAnimatedRects
      würde sich da anbieten. Vorher abfragen, ob der Anwender Animationen deaktiviert hat.

    Aktiviere das Fenster vor TrackPopupMenu (per SetForegroundWindow) und sende nach TrackPopupMenu eine Null-Message ans Fenster.

    Also statt

    Code:
    TrackPopupMenu(hMenu, TPM_RIGHTBUTTON, x, y, 0, hWindow, NULL);
    
    Code:
    SetForegroundWindow(hWindow);
    TrackPopupMenu(hMenu, TPM_RIGHTBUTTON, x, y, 0, hWindow, NULL);
    PostMessage(hWindow, WM_NULL, 0, 0);