Popup Menü wieder schließen



  • Hallo,

    ich habe ein kleines (Test-)Programm geschrieben, das nur ein simples Fenster und dazu ein Icon in der Taskleiste erstellt. Beim Rechtsklick auf das Icon wird ein PopUp-Menü geöffnet (Mit TrackPopupMenu()). Dieses Menü schließt allerdings nur, wenn man ein Menüeintrag auswählt. Wenn das PopUp-Menü geöffnet ist und man klickt z.B. links daneben, auf ein anderes Fenster oder so, bleibt es immernoch geöffnet und das stört irgendwie. Ich finde allerdings keine Funktion in der MSDN um ein PopUp Menü einfach nur zu schließen. Hier ein bisschen Code:

    case WM_ICONCLICK:
           switch(lParam)
           {
                case WM_LBUTTONDBLCLK:                                    // Doppelklick aufs Icon?
                    if(!wActive)                                        // Wenns nicht versteckt ist...
                       ShowWindow(hwnd, SW_SHOWNORMAL);                    // ...zeige es
                break;
                case WM_RBUTTONDOWN:
                    POINT p;
                    GetCursorPos(&p);
                    iSelected = TrackPopupMenu(hIconMenu, TPM_RIGHTALIGN | TPM_TOPALIGN | TPM_RETURNCMD, p.x, p.y, 0, hwnd, 0);
                    if(iSelected == 2)
                        ShowWindow(hwnd, SW_SHOWNORMAL);
                    else
                        return (0);
                        break;
           }
        break;
    

    Ich hoffe ihr könntet mir evtenuell weiterhelfen. Viel Dank im Voraus 🙂



  • Lösung steht in der Hilfe zu TrackPopupMenu unter Remarks.



  • remark schrieb:

    Lösung steht in der Hilfe zu TrackPopupMenu unter Remarks.

    Da steht bei mir nur

    Windows CE: Windows CE does not support the following flags for the uFlags parameter:

    TPM_NONOTIFY

    TPM_LEFTBUTTON

    TPM_RIGHTBUTTON

    😕



  • Meine MSDN Versin ist wohl doch was zu alt, in der Online Version stand was du meinstest 😃

    Danke 🙂



  • Es reicht wenn Du vor dem TrackPopupMenu ein SetForegroundWindow mit dem Handle Deines Fensters setzt.


Anmelden zum Antworten