Popupmenu bearbeitet keinen Befehl
-
Heya!
Aaalso, ich bin leider noch nicht besonders erfahren in C++ weshalb ich um nachsicht bitte, wenn ich hier irgendwas essentielles nicht poste ;0)
So.. Ich habe im resourcen Editor ein Menu gebastelt und es mit folgender funktion in meinen Code eingebaut (funktioniert):
CMenu menu; menu.LoadMenu(IDR_PLAYERMENU); CMenu* pSub = menu.GetSubMenu(0); DWORD dwMenuKeuze = pSub->TrackPopupMenu(TPM_LEFTALIGN | TPM_NONOTIFY | TPM_RETURNCMD, 100, 100, this);Den code hatte ich irgendwo gefunden.. naja, jetzt habe ich ausserdem via Klassenassistent noch entsprechende Commands hinzugefuegt, die auch in der MSG MAP stehen:
... afx_msg void OnIdrplayermenuFreefly(); afx_msg void OnIdrplayermenuMute(); afx_msg void OnIdrplayermenuTerminate(); ...Die funktionen existieren auch, testweise auch mit afx_msg zum testen davor - aber ausgefuehrt werden sie nicht. habe ich da irgendwas uebersehen?
Danke schonmal
-
Wie sieht denn deine MessageMap aus?
Und an welcher Stelle lädst du das Menü?
-
Also wenn wir das selbe meinen dann sieht die message Map so aus:
// Generated message map functions //{{AFX_MSG(CServerDlg) virtual BOOL OnInitDialog(); afx_msg void OnConsoleSend(); .......... afx_msg void OnIdrplayermenuTerminate(); afx_msg void OnIdrplayermenuBan(); afx_msg void OnIdrplayermenuKick(); afx_msg void OnIdrplayermenuPm(); //}}AFX_MSG DECLARE_MESSAGE_MAP()Aufgerufen wird es in einer Funktion, die beim RClick einer Listview 'passiert'.
Dank nochmal :0)
-
Das grundproblem hier kann das Routing sein. Man sollte immer bei TrackPopupMenu statt dem aktuellen Feentser das AfxGemMainWnd oder den Frame Zeiger (meistens das selbe) übergeben.
-
Umm.. kannst du vielleicht kurz erklaeren, was du damit mienst? Ich hab da so leiiichte Probleme mit o0
-
pSub->TrackPopupMenu(TPM_LEFTALIGN | TPM_NONOTIFY | TPM_RETURNCMD, 100, 100, AfxGetMainWnd());
-
AH, ok Danke :0)
Klappt :0))
-
Also wenn wir das selbe meinen
Nein, ich meinte die Command-Zeilen in der cpp:
BEGIN_MESSAGE_MAP(CMeineApp, CWinApp) ON_COMMAND(ID, On...) END_MESSAGE_MAP()Aber vielleicht, hast du mit dem AfxGetMainWnd ja dein Ziel schon erreicht?
-
Japp :0)
Danke trotzdem