Pointer auf Document...

Squeegee

Mitglied
Hallo,
ich steh irgendwie grad auf dem Schlauch...
Ich brauch aus einer beliebigen Klasse heraus einen Pointer auf das Document (SDI)
Ich habe da jetzt verschiedene Möglichkeiten probiert, unter anderem:


Code:
CMainFrame* pMainFrame = (CMainFrame*) ::AfxGetMainWnd();
CServerDoc* pDoc = (CServerDoc*)pMainFrame->GetActiveDocument();

Dabei ist CServerDoc meine Documentenklasse. Tja, aber leider gibt die Methode GetActiveDocument() immer NULL zurück, was laut MSDN heißt, dass es kein aktuelles Document gibt. Das gibts aber garantiert, schließlich greife ich ständig auf dessen Daten zu.
Das Witzige ist: Mache ich pDoc-> bietet er mir wunderbar alle meine Methoden, die ich in meiner Documentenklasse geschrieben habe, an.

Warum funktioniert das denn nicht? Hat jemand eine Idee?


Grüße Squeegee
 
Zuletzt bearbeitet:
Hallo,
auf die Schnelle fällt mir nur diese Möglichkeit ein:
Code:
CMainFrame* pMainFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CServerDoc *pDoc=(CServerDoc*)pMainFrame->GetActiveDocument();
Probier's mal aus, bei mir funktioniert die Methode jedenfalls:

Mfg

langer
 
Hallo,
ok, ich habe jetzt folgendes rausgefunden: Prinzipiell tun beide Codeausschnitte, leider scheine ich im Konstruktor der Dokumentenklasse noch keinen keinen Pointer auf dieselbe zu bekommen.
Mein Problem ist nun folgendes:

Die Klasse, die den Pointer benützt, liest Konfigurationsdaten von einem ASCII-File ein. Diese Daten werden dazu benützt, Fenster in der OnCreate der Viewklasse zu erstellen.
Aber selbst in der OnCreate bekommen ich den Pointer auf die Dokumentenklasse nicht, wenn ich erst da die Konfigurationsdaten einzulesen versuche.

Meine Frage ist also folgende:
Wie schaffe ich es, Daten zu einem Zeitpunkt einzulesen, an dem die Dokumenteklasse schon existiert ( ich also mit obigem Code einen Pointer darauf machen kann), die Viewklasse aber nicht ihre OnCreate ausgeführt hat?
Gibt es da eine Methode? Hat damit jemand Erfahrungen?

Die einzige Lösung, die mir einfällt ist, den gesamten nicht gerade kleinen ASCII-Parser mit in die Dokumentenklasse zu packen, was ich aber als sehr unschöne Empfinden würde. Ich finde eine Klasse CReadConfig einfach viel schöner...

Grüße Squeegee
 
Zurück