Aufruf von Methoden/Membervariablen in einem Dialog aus der Doc-Klasse
-
Hallo ihr Profis,
ich schreibe zur Zeit an einer SDI-Anwendung aus der ich in der Doc-Klasse (BelegDoc->abgeleitet von CDocument) ein modales Dialogfeld (abgeleitet von CDialog) aufrufe. Das Dialogfeld (addDlg) ist als Membervariable definiert. Außerdem habe ich eine weitere Membervariable, die als Objektarray (CObArray) definiert ist. Jetzt benötige ich im Dialogfeld aber Daten aus dem Objektarray und Methoden der BelegDoc-Klasse. Eigentlich müsste es doch klappen, wenn ich im Dialog eine Membervariable vom Typ CBelegDoc* definiere und diese dann per Setter aus der BelegDoc-Klasse fülle und danach das Dialogfeld aufrufe. Aber leider klappt das nicht, da der Compiler bereits einen Fehler bringt, wenn ich nur die Variable definiere oder die BelegDoc.h includiere.
Jetzt ist meine Frage:
Wie komme ich an die Daten und Methoden der Doc-Klasse in meinem Dialogfeld heran?Ich hoffe ihr könnt mir folgen und (vor Allem
) helfen, da ich nun schon seit 2 Stunden an dem Problem sitze und nicht mehr weiter weißMfG
MFC_Geplagter
-
Der einfachste Weg ist es, der Dialogklasse einen Zeiger auf das Doc zu spendieren, den du vor dem DoModal()-Aufruf initialisierst.
PS: Ansonsten haben wir ein Magazin - und dort gibt es auch einen Artikel, wie die Objekte einer SDI-Anwendung sich gegenseitig finden können.
-
CStoll schrieb:
Der einfachste Weg ist es, der Dialogklasse einen Zeiger auf das Doc zu spendieren, den du vor dem DoModal()-Aufruf initialisierst.
PS: Ansonsten haben wir ein Magazin - und dort gibt es auch einen Artikel, wie die Objekte einer SDI-Anwendung sich gegenseitig finden können.
Danke für deine Antwort. Leider habe ich das schon probiert und irgendwie funktioniert das aber nicht. Wenn ich im Dialog folgendes aufrufe:
CBelegDoc* pDoc = dynamic_cast<CBelegDoc*>(((CMainFrame*)AfxGetMainWnd())->GetActiveDocument()); ASSERT(pDoc);bringt der Compiler folgenden Fehler
error C2061: Syntaxfehler : Bezeichner 'CBelegDoc'Dasselbe passiert wenn ich eine Membervariable (im Dialogfeld) definiere und diese dann per Setter fülle. Er erkennt einfach CBelegDoc nicht und ich weiß nicht warum

-
Natürlich mußt du einen Bezeichner auch bekanntmachen, bevor du ihn verwenden kannst - und genau dazu gibt's Header, die du an der richtigen Stelle #include'n mußt (in deinem Fall die 'BelegDoc.h' im 'addDlg.cpp' - eventuell mit Forward-Deklaration).
-
Super!! Forward-Deklaration war das Stichwort. Das "normale" includen hatte ich schon probiert und das hat nicht funktioniert. Da hätte ich auch selber drauf kommen können, aber ich danke dir 1000mal.
MfG und schönen Tag noch
MFC-Geplagter