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:

Reihenfolge der Erstellungen

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:

Die Zugriffe auf die Komponenten

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.



Copyright © 2004

Senden Sie Emails mit Fragen oder Kommentaren zu dieser Website an: mailto:info@cpp-tutor.de
 Wolfgang Schröder, Lerchenweg 23, D-72805 Lichtenstein. Tel: +49 7129 6470