Dialog bzw. klassenübergreifende Ereignisse
-
Hallo Leute,
ich bin noch frisch, so vergebt mir meine Frage:
Ich möchte von einem Ereignis in einer Klasse eine Funktion in einer anderen Klasse auslösen. Wie mache ich das? Ebenso habe ich das Problem, wenn ich in einer Klasse Daten bearbeite und möchte sie danach in einem Dialog einer anderen Klasse ausgeben das auch nicht so richtig funktioniert. Wie macht man das am Besten?Beispiel: SDI-Anwendung mit PropertySheets im Editierfeld eingebunden. Ich habe eine DialogBar mit Edit-Feld und "Auf" und "Nieder" Taste. Die Tasten sollen eine Zahl im Editfeld in- und dekrementieren (kein Problem) sowie in den Dialogen die ausgegebenen Daten eines Datensatzes ändern (Problem, da andere Klasse). Wie gestaltet man sowas?
Micha
-
Erweitere den Konstruktor Deines CPropertySheets um eine Referenz auf das Objekt und merke Dir diesen ggfs. in einer Membervariablen. Diese Referenz übergibst Du dann wiederum im (um eben diese Objektreferenz) erweiterten Konstruktor Deiner CPropertyPages.
Das Thema wurde hier schon mehrfach behandelt, auch im Zusammenhang mit zwei Dialogen, also einfach mal die Suchfunktion des Forums bemühen.
-
Wenn du schon mit SDI arbeitest, warum arbeitest du dann auch nicht mit Doc/View-Trennung. Damit hast du die Daten zentral in der Doc-Klasse gehalten und kannst sie aus welchen View-Klasen auch immer abrufen. Bei Dialogen musst du dann so verfahren, wie es jencas schon geschrieben hat.
-
Und wenn Du nun wissen möchtest wie man auf DOC/View zugreift dann schauen bitte inm C++ Magazin bei den Artikel.
-
Diesen Artikel hab ich gefunden http://www.c-plusplus.net/forum/viewtopic-var-t-is-125623-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html
Das Problem ist ja das ich kein echtes SDI nutze, sondern Propertypages ins Editierfenster fest eingebunden habe. Außerdem lese ich von einer Datei HEX-Daten mit eigener Routine. Bisher lese ich die Daten in einem Dialog der Prop.pages ein und würde dann jeden Datensatz in Doc übertragen um dann von den anderen Pages drauf zuzugreifen. Das ist mir bis jetzt noch nicht gelungen. Für die Datensätze habe ich eigene Klassen erstellt. Wie müssen denn diese Wo definiert werden um sie in Doc abzulegen?
Bisher hab ich in Doc die gleiche Klasse definiert und Intelisense Zeigt im Dialog auch den richtigen Datentyp an doch der Kompiler meckert Undefinierter Datentyp.Micha
-
Was heisst denn "kein echtes SDI"? Was hast Du denn beim Erstellen des Projektes für einen Typ angegeben? SDI, MDI oder Dialog-orientiert?
-
Beim Erstellen hab ich SDI gewält, ich nutze es aber nicht so wie es eigentlich vorgesehen ist.
Also das Hauptproblem ist das Speichern und Laden aus der C...Doc Klasse, da ich mit der Definition meiner Datentypen irgendwas nicht richtig mache. Wie muss ich denn eine Datentypklasse in Doc erstellen um von C...View auf sie zuzugreifen?