ID zu einem Menü-Item



  • Hi!

    Ich würde mir gerne in der Funktion, die nach Auswahl eines Menüpunktes aufgerufen wird, die ID des zugehörigen Menü-Items beschaffen.

    Bsp.:
    Ich habe einen Menüeintrag "BeispielMenüEintrag" mit einer bestimmten ID.
    In der zugehörigen Funktion "CBeispielDoc::OnBeispielMenüEintrag()" möchte ich gerne die ID des zugehörigen Menü-Items haben.

    Wie kann ich das realisieren?

    Danke und Gruß,
    Nanuq



  • Vieleicht mit GetCurrentMessage( ); da bekommst Du auch die ID. Denke ich 😕

    Gruß



  • Danke zunächst mal für den Tipp. Die Idee war gut und prinzipiell funktioniert sie auch.
    Habe im MSDN ein Beispiel gefunden, wie ich auf diese Weise an eine ID komme.

    const MSG* pmsg = GetCurrentMessage();
    // folgende Zeile liefert dann die zugehörige ID
    LOWORD(pmsg->wParam));
    

    Jetzt habe ich aber folgendes Problem:
    GetCurrentMessage() ist protected in CWnd und wie schon beschrieben rufe ich "OnMenueEintrag" aus meiner Dokumentenklasse auf, kann also nicht darauf zugreifen...
    Vielleicht stelle ich mich auch nur besonders dämlich an, aber ich habe keine vernünftige Idee, wie ich diese Funktion trotzdem nutzen kann. Einen Aufruf von "OnMenueEintrag" aus CMainFrame möchte ich möglichst vermeiden.

    Kann mir jemand einen Tipp geben?!

    Danke vorab!



  • Du könntest der CMainFrame ja eine GetMessage()-Methode spendieren, die du aus der Dokument-Klasse aufrufen kannst.

    PS: außerdem hat doch der Klassen-Manager genau diese ID mit deiner Methode verknüpft, oder habe ich da was falsch in Erinnerung?)



  • CStoll schrieb:

    Du könntest der CMainFrame ja eine GetMessage()-Methode spendieren, die du aus der Dokument-Klasse aufrufen kannst.

    Danke für die Hilfe. Eigentlich ganz einfach 🤡
    Das wäre für mich sicher die etwas weniger aufwendige Variante gewesen. Ich habe es jetzt allerdings doch andersherum gelöst, die Funktion hinter dem Menüeintrag aus CView aufgerufen und die ID aus GetCurrentMessage dann an die Dokumentenklasse weitergegeben...


Anmelden zum Antworten