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)


  • Mod

    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


  • Mod

    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


Anmelden zum Antworten