PopupMenu schließt im TrayIcon nicht



  • Hallo,

    folgendes Problem.

    Ich habe eine Anwendung die erzeugt ein Trayicon mit einem Popupmenü.
    Wenn ich auf das Icon geht und dann rechts klicke, geht das Popupmenü auf.
    Wähle ich dann aber keinen Menüpunkt aus, sonder klicke außerhalb des
    Popupmenüs, sollte es sich schließen. Das tut es aber nicht. es bleibt solange
    offen, bis ich einen Menüpunkt anklicke.

    Warum ?

    Wie bekomme ich das weg?

    Gruß Mario



  • Hallo,
    nun habe ich das viel zitierte Beispiel nachgebaut.

    NOTE on TrackPopupMenu

    Many people have had troubles using TrackPopupMenu. .....
    So - what should have been a simple:
    Code:
    TrackPopupMenu(hSubMenu, TPM_RIGHTBUTTON, pt.x,pt.y, 0, hDlg, NULL);
    becomes
    Code:

    SetForegroundWindow(hDlg);
    TrackPopupMenu(hSubMenu, TPM_RIGHTBUTTON, pt.x,pt.y, 0, hDlg, NULL);
    PostMessage(hDlg, WM_NULL, 0, 0);

    Refer to KB article "PRB: Menus for Notification Icons Don't Work Correctly" for more info.

    im OnPopup-Ereignis des TrayIcons:

    void __fastcall TConfigMain::PMTrayPopup(TObject *Sender)
    {
      POINT MausPosition;
      GetCursorPos(&MausPosition);
      SetForegroundWindow(ConfigMain->Handle);
    
      TrackPopupMenu(PMTray->Handle,TPM_RIGHTBUTTON,MausPosition.x,MausPosition.y,0,ConfigMain->Handle,NULL);
      PostMessage(ConfigMain->Handle, WM_NULL,0,0);
    
    } // <<<--- hier einen Breakpoint setzten und dann mit F7 verfolgen
    

    Wenn ich nun ins Leere Klicke, dann verschwindet das Popup. ABER wenn ich auf einen Menüpunkt
    des Popupmenüs klicke, dann erscheint das Popupmenü ein zweites mal.
    Zu erst wird das Popup im obigen Quelltext erzeugt. Dann (nur wenn ich in das Popupmenü klicke) wird nach
    Beendigung der OnPopup-Ereignisfunktion ein zweites Popup erzeugt.

    Kann man das unterbinden?

    Gruß Mario


Log in to reply