Menü-Message in eigene Klasse weiterleiten
-
Hallo!
Wenn ich mit dem Klassenassistent eine ON_COMMAND-
Nachrichtenbehandlungsmethode für einen Menüpunkt
einfüge, dann wird die Nachricht an das Mainframe
oder das aktive Document problemlos weitergeleitet,
nicht jedoch an eine andere Klasse.
Woher sollte das Programm auch wissen, an welche
Instanz der Klasse die Nachricht weitergeleitet
werden soll... (unabhängig davon, dass es genau
eine gibt)
Wie kann ich die Nachricht direkt in diese Instanz
weiterleiten, ohne für jeden Menüpunkt erst die
Nachrichtenbehandlung in CMainFrame durchführen zu
müssen - auf die Dauer wird diese sonst so unüber-
sichtlich.Alex
-
Ist es denn nötig, sie direkt als Nachricht weiterzuleiten?
Ich weis ja nicht, was diese ominöse Klasse macht, aber evtl. kannst du dir auch in deinem Command-Handler nen Zeiger oder ne Referenz auf die Klassen holen und dann dort die entsprechende Methode ausführen lassen
-
So hab ich es bisher ja gemacht, aber da dieser Menüpunkt
eigentlich eben nur diese Klasse betrifft, wollte ich es
auslagern.Alex
-
Die Frage ist, ist das gescheit. Du solltest deine Oberfläche soweit es geht strikt von deinen Daten und deinem eigentlichen Algorithmus trennen.
Einfaches Bsp: du hast nen Programm mit einer KLasse zum Zeichnen von Vierecken. Nun hast du einen Menupunkt "erstelle neues Viereck" oder sowas in der Art.
Dieser Menupunkt betrifft dann ja(mal GROB vereinfach^^) auch nur deine Klasse CVierecksFeld.
Würdest du jetzt in deine Klasse CVierecksFeld deshalb die Nachricht abfangen wollen? Oder würdest du die Klasse nur benutzen?
Ich kenne deine Struktur net und was dahinter steht. Musst du halt selbst mal schauen. Aber man sollte nicht aus Bequemlichkeit die Sachen vermischen. Das rächt sich oft hintenraus.
-
Hallo!
Mit den Daten hat das eigentlich nichts direkt zu tun.
Es geht eher um die Ansteuerung von Messgeräten.
In dem Fall zum Beispiel ein Monochromator.
Die Klasse CMonochromator soll sozusagen für sich selbst
verantwortlich sein (Auswählen des aktiven Gerätes,
Ansteuerung, ...)
Also aus meiner Sicht ähnlich dem Konzept, einen Menüaufruf
statt dem Mainframe dem aktiven Dokument zuzuweisen.Alex