Richtige Anwendung von SendMessage?
-
Hallo.
Ich will von einem CMenü aus einen Befehl an einen Dialog senden. Das Heikle: CMenu ist dem Hauptdialog hinzugefügt worden; Der "Zieldialog" von mir, der jedoch die Nachricht empfangen soll, ist in einem RegsterTab-Control eingenistet. D.h. im Hauptdialog hab ich ein Tabcontrol und diesem Control wurden wiederum andere Dialoge zugewiesen.
also, Im MessageMap meiner Hauptklasse definieren ich von HAND (geht das nicht auch mit einem Assistenten??) foplgende Codezeile:
ON_COMMAND(ID_MENU_SHOW, OnMenuShow)
Damit bewirke ich, dass die Hauptdialogklassenmethode 'OnMenuShow' aufgerufen wird.
Jetzt muss ich noch den entsprechenden, aktiven Dialog aus dem Registertab ziehen und dann die Nachricht an diesen senden.
DlgMain::OnMenuShow(){ CDialog* w = m_Tab.GetCurrentTab(); w->SendMessage(MyID);
Muahh,
Im Code des Zieldialoges muss ich nun die ID einer Methode zuweisen:ON_MESSAGE(MyID, show)
Das bewirkt, dass die lokale Methode des Zieldialoges mein CMenu-Befehl erhält.
Wichtig dabei: Ich muss das Headerfile der Hauptdialogklasse ebenfalls integrieren, sonst kennt er die ID nicht. Und auch noch witzig: Wenn ich die ResourcenIDs anschaue, wird die 'MyID' als nicht verwendet gekennzeichnet.
Nun zur Frage: Muss das so kompliziert sein oder gibt es da nicht einen eleganteren Weg? z.B. dass man das CMenu an eine dazugehörendes Dialogklasse anbinden kann?
Danke für eure Hilfe!!
-
bin kein Profi aber mach mal den Klassenassi auf wähle da die Registerkarte Messagemaps im Pulldown deinen Hauptdialog in der Linken Spalte suchst du nun den Menüeintrag auf dem was passieren soll und dann erschein rechts COMMAND doppeltclick drauf und dann Button Edit Code
Meintest du sowas?