Kontextmenue funzt nicht ....



  • Hallo,

    ich habe mit dem Resourcenassistent ein Menue erstellt, den obersten Eintrag
    gelöscht (soll ja ein Kontextmenue werden) und per "Ereignisshandler wird hinzugefügt"
    einen Event in meiner Dialogklasse erzeugt (VersuchDlg).

    nun rufe ich das Kontextmenue explizit mit:

    CPoint local = point;
        CRect rListRect;
        m_tree.ScreenToClient(&local);
        m_tree.GetClientRect(rListRect);
        if (rListRect.PtInRect(local) != 0)
        {
            CMenu popMenu;
            popMenu.LoadMenu(IDR_MeinKontextMenue);
            CPoint posMouse = point;
            popMenu.GetSubMenu(0)->TrackPopupMenu(0,posMouse.x,posMouse.y,pWnd,0);
        }
    

    auf. Dies funktionert nun korrekt, aber mein Event kommt nicht an ?
    Soll heisen, ich kann auf meinen Menueeintrag klicken sooft ich will,
    aber die Funktion wird nie aufgerufen.

    Was mach ich falsch ?

    MessageMap:

    ON_COMMAND(ID__USEMENUE, OnUseMenue)



  • So sollte es sicher funktionieren, es werden halt nur keine Meldungs-Funktionen verwendet... :

    BOOL selection = contextMenu->TrackPopupMenuEx(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RETURNCMD, point.x, point.y, pWnd, NULL);
    
    if(selection  == ID_...)
    {
       ...
    

    rico



  • lol, ist nicht dein erst?!
    sollen wir jetzt schauen, ob die nachricht ankommt, oder willste das nicht erstmal selber testen?! haste schon getestet, was rListRect.PtInRect(local) zurückgibt?!

    Esco



  • Wenn ich das richtig verstanden habe, müsste ich also
    mein Kontextmenue pollen, um eine Auswahl zu erkennen ?

    Die Methode mit "Warte auf Rückgabe" unterpricht doch mein
    Programm ? Wie sieht es da mit meinem Timer aus ?

    Und wie aktiviere ich die ursprünglichen Meldungen trotzdem ?



  • Wenn ich mir die MSDN anschaue:

    TPM_NONOTIFY
    If this flag is set, the function does not send notification messages when the user clicks on a menu item.

    würde doch eigentlich bedeuten, das ein Event immer geschickt wird, erst
    wenn das TPM_NONOTIFY steht, dann nicht ?


Anmelden zum Antworten