PopUp Menü bei nicht-fokusierendem Mausklick schließen
-
Hallo zusammen,
ich habe mir ein TrayIcon gebastelt, welches als "Vater" ein unsichtbares Fenster besitzt. Wird dieses Icon mit der rechten Maustaste selektiert, so öffnet sich ein Kontextmenü, dass sich aber nur schließt wenn ich einen Eintrag darauß selektiere.
Ich möchte natürlich gern, dass es auch geschlossen wird, wenn mit der Maus außerhalb des Menüs etwas angeklickt wird.
Das Problem daran ist, ich weiß nicht genau wo ich auf welches Ereignis warten muss.
Ich würde natürlich am Liebsten inLRESULT CALLBACK MainWindowCallback(HWND hWindow, UINT uMessage, WPARAM wParam, LPARAM lParam)darauf reagieren, allerdings bezweifle ich (mit meinen geringen WinAPI Kenntnissen), dass dies möglich ist, da ja ein unsichtbares Fenster keine Mausereignisse bekommt?!
Kann ich global auf Mausereignisse reagieren?
Richard
-
Hmm, das schließt sich nicht wenn du außerhalb des Kontextmenüs irgendwo klickst?
Hast du dir dir Remarks bei TrackPopupMenuEx() bzgl. SetForegroundWindow() und WM_NULL angeguckt?
-
Vielen Dank, der Tipp war Gold wert.
So funzt es:
GetCursorPos(&(this->CursorPosition)); /* get cursor position */ SetForegroundWindow(this->hOwnerWindow); /* brings the owner window to the top */ TrackPopupMenu(this->hPopupMenu, /* display the trayicon menu */ TPM_LEFTBUTTON, /* menu selection with the left button */ this->CursorPosition.x, /* x-coordinate */ this->CursorPosition.y, /* y-coordinate */ 0, /* must be zero */ this->hOwnerWindow, /* window that owns the menu */ NULL); /* ignored */ PostMessage(this->hOwnerWindow, WM_NOICONFOCUS, 0, 0);Das kommt davon, wenn man die Manuals nicht richtig studiert.

http://msdn2.microsoft.com/en-us/library/ms648002.aspx