Zusammenspiel
der Klassen
Diese Lektion sollte für Sie nichts Neues enthalten. Sie zeigt nochmals in einer
Zusammenfassung das Zusammenspiel zwischen den im Doc/View Modell enthaltenen Komponenten
auf.
Sehen wir uns zunächst einmal an, wie die einzelnen Doc/View Komponenten erstellt
werden:

Das Applikationsobjekt wird direkt in der Anwendung durch instantiieren eines
Objektes der Klasse CWinApp erstellt. Dies führt dazu, dass über den Konstruktor
des CWinApp Objektes dessen Methode InitInstance(...) aufgerufen
wird. Innerhalb dieser Methode wird das Dokumentenverwaltungsobjekt erstellt. Dieses
Dokumentenverwaltungsobjekt erstellt nun seinerseits nacheinander das Dokumentenobjekt
und das Rahmenfenster. Zum Schluss erstellt das Rahmenfenster noch das für die Darstellung
der Dokumentdaten notwendige Ansichtsobjekt. Beachten Sie bitte, dass das Rahmenfenster
nur als Container fungiert, d.h. es selbst stellt innerhalb seiner Client-Area keine
Ausgaben dar. Das Rahmenfenster enthält im Prinzip 'nur' die Menüverwaltung sowie
einige Erweiterungen wie z.B. die Statuszeile.
Das nachfolgende Bild enthält in einer Übersicht die Zugriffsmöglichkeiten, die
von einer Komponente des Doc/View Modells auf eine andere Komponente bestehen:

Wollen Sie z.B. von einer beliebigen Klasse innerhalb der Anwendung auf Daten
des Dokuments zugreifen, so rufen Sie zunächst die Funktion AfxGetApp(...)
auf. Diese liefert Ihnen einen Zeiger auf das CWinApp-Objekt der Anwendung.
 |
Da AfxGetApp(...) eine 'normale' Funktion ist, können Sie sie von
beliebiger Stelle im Programm aufrufen um einen Zeiger auf das MFC-Anwendungsobjekt
zu erhalten. |
Über diesen Objektzeiger können Sie dann auf die Membervariable m_pMainWnd
zugreifen um den Zeiger auf das Rahmenfenster (Typ CFrameWnd-Zeiger) der
Anwendung zu erhalten. Rufen Sie über den so erhaltenen Zeiger auf das Rahmenfenster
die CFrameWnd-Methode GetActiveDocument(...) auf um letztendlich
den Dokumentenzeiger zu erhalten. Sie sehen, manchmal muss ein etwas längerer Weg
beschritten werden um an die gewünschten Daten zu gelangen.
So, in der nächsten Lektion wird's ernst. Wir werden uns ansehen, wie Sie mittels
der Serialisierung Daten einlesen und abspeichern können.
|