Menu-Eintrags Ereignisse



  • Ich füge einem fremden FensterMenu ein weiteren Menüeintrag hinzu.
    Das mache ich so:

    ThisMenu=GetSystemMenu(Fenster,false);
    AppendMenu(ThisMenu,MF_STRING,0,"Hallo"); //Ich weiß nicht was an die Stelle mit der 0 eingesetzt werden soll. Meistens steht hier sowas wie IDM_IRGENDWAS
    

    Der Menu-Eintrag wird auch angezeigt nur habe ich keine Ahnung wie mein Programm erfährt das jemand auf den Menu-Eintrag geklickt hat.
    Außerdem wird beim Klicken auf den Eintrag kein Häkchen davor gemacht.



  • Anstelle der 0 suchste dir eine unbenutzte ID aus, dann fängste WM_COMMAND ab, und guckst, ob die ID von WM_COMMAND deiner benutzten ID bei AppendMenu entspricht!

    Gruß,
    Kevin



  • Muss ich die Id dafür irgendwo definieren, wenn ja wie: Im Header via #define?



  • Die ID ist ja auch nur eine Zahlenwert - damit du dir diesen besser merken kannst bzw. damit das Programm lesbarer wird, macht man eben ein define 😉



  • mhh habe jetzt die id eingesetzt (40002). Ich fange alle WM_COMMAND Messages ab habe allerdings noch keine Message abgefangen die als WParam oder LParam eine 40002 hat. Was mache ich falsch?



  • Fängst du denn auch WM_COMMAND vom fremden Fenster ab?! Dazu müsstest du wohl einen Hook (WH_GETMESSAGE?) einrichten bzw. das Fenster subclassen (dazu brauchst du aber ja auch einen Hook, um deine DLL in den Adressraum des anderen Prozesses zu bringen) 🙄



  • Ich habe das bislang nur an meinem Fenster getestet, allerdings komme ich mit Hooks überhaupt nicht klar. Ich dachte man könnte gleich bei AppendMenu eine Funktion definieren, aber so finde ich das ein bisschen kompliziert 😮



  • Nein, so einfach kannst du nicht in fremden Anwendungen "rumpfuschen" 😉


Anmelden zum Antworten