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 ?