Übersicht Doc/View
In diesem Kapitel beginnen wir den Einstieg in ein neues 'Programmier-Zeitalter', der
Programmierung mit dem Doc/View Modell. Die Grundidee hinter diesem Modell ist, wie
bereits erwähnt, die Trennung der Daten von ihrer Darstellung. Um dies zu verwirklichen
besteht das Doc/View Modell aus folgenden drei Teilen:
- dem Dokumentenobjekt das die Daten enthält. Dokumentenobjekte werden durch von CDocument
abgeleitete Klassen realisiert. Das Dokumentenobjekt ist unter anderem auch für das
Einlesen und Abspeichern der Daten zuständig.
- den Ansichtsobjekten die die Daten darstellen. Ansichtsobjekte werden durch die Klasse CView
oder einer davon abgeleiteten Klasse realisiert. Nur die Ansichtsobjekte enthalten
Methoden zur Ausgabe der Daten in einem Fenster.
- der Dokumentenverwaltung die das Dokumentenobjekt und die Ansichtsobjekte
zusammenfügt. Die Dokumentenverwaltung wird durch die Klasse CDocTemplate
realisiert.
 |
Wenn im Folgenden von Dokumenten die Rede ist, so ist damit nicht etwa
nur eine Textdatei gemeint sondern eine Ansammlung von beliebigen Daten. Befreien Sie sich
von der Vorstellung, dass Dokumente irgend etwas mit Dokumentationen im sonst üblichen
Sinne zu tun haben. Dokumente können zwar auch Textdaten enthalten aber genauso gut auch
binäre Messdaten oder ähnliches. |
Aber fangen wir auch hier gleich mit der Praxis an.
 |
Erstellen Sie zunächst mittels des Anwendungs-Assistenten eine MFC-Anwendung
(exe) und geben dem Projekt den Namen DVBasis. Danach fragt der
Anwendungs-Assistent über die bereits bekannten 6 Schritte die Einzelheiten über die zu
erstellende Anwendung ab. Allerdings haben Sie nun ungleich mehr
Möglichkeiten die Anwendung zu beeinflussen. Im
ersten Schritt stellen Sie wieder wie bisher als Anwendungsart Einzelnes Dokument
(SDI) ein. Allerdings lassen wir jetzt die Markierung bei Unterstützung der
Dokument-/Ansicht-Architektur stehen. Klicken Sie dann den Weiter Button an.

In den Schritten 2 und 3 belassen wir alles beim Alten, d.h. unsere Anwendung
unterstützt vorläufig noch keine Datenbank, keine Verbunddokumente und auch keine
ActiveX Controls.
Im Schritt 4 können Sie jetzt die Statusleiste deaktivieren.
Bei Anwendungen die auf dem Doc/View Modell basieren taucht der im vorherigen Kapitel
erwähnte Fehler (fehlerhaftes Rahmenprogramm ohne Statuszeile/Symbolleiste) nicht mehr
auf. Klicken Sie nun Dialog Schritt 4 einmal den Button Weitere Optionen... an.

In dem eingeblendeten Dialog können Sie Ihrer Anwendung eine Standard-Dateierweiterung
zuweisen. Aber Achtung!
 |
Tragen Sie hier bitte keine der sonst üblichen Standard-Dateierweiterungen ein! Wenn
Sie hier z.B. die Erweiterung doc eintragen würden, so würden nach dem ersten
Lauf des Beispiels alle doc-Dateien standardmäßig mit dem Beispielprogramm
verknüpft sein. |
Im zweiten, unteren Teil des Dialogs erfolgen weitere Einstellungen die für die
verschiedenen Datei-Dialoge verwendet werden. So wird zum Beispiel der Eintrag im Feld Filtername
im Datei öffnen Dialog als Standard-Dateityp verwendet.
Schließen Sie jetzt den Dialog wieder und gehen dann weiter bis zum Dialog
Schritt 6.

Auf den ersten Blick unterscheidet sich dieser Dialog nicht vom bisherigen. Wenn Sie
sich aber den Dialog einmal genauer ansehen werden Sie feststellen, dass Sie nun im Feld Basisklasse
verschiedene Ansichten auswählen können wenn Sie im oberen Teil des Dialogs die Klasse CDVBasisView
selektiert haben. Lassen Sie aber noch die Vorgabe CView hier stehen. Mit den
verschiedenen Ansichten werden wir uns einem späteren Kapitel noch befassen.
Klicken sie jetzt den Button Fertigstellen an um die Anwendung zu erstellen.
Anschließend können Sie die Anwendung übersetzen und starten. |
Sehen wir uns an welche Klassen der Anwendungs-Assistent dem Beispiel
hinzugefügt hat:

Die Klasse CAboutDlg kennen Sie schon, wenigstens vom Namen her, aus dem
letzten Kapitel. Sie dient zur Darstellung des Info-Dialogs den Sie über das
Fragezeichen im Menü erreichen können. Mit den Dialogen werden wir uns aber erst später
beschäftigen und übergehen diese Klasse an dieser Stelle einfach.
Die zweite Klasse CDVBasisApp ist die Applikationsklasse der Anwendung.
Oberflächlich betrachtet hat sie sich gegenüber einer Anwendung ohne Doc/View Modell
nicht verändert. Die Änderungen liegen hier im inneren der Klasse verborgen. Mehr dazu
gleich in der nächsten Lektion.
Als nächstes folgt die Klasse des Dokuments CDVBasisDoc. Die beiden
wichtigsten Methoden in dieser Klasse sind OnNewDocument(...) und Serialize(...).
Sie dienen zur Initialisierung eines Dokuments sowie zum Laden und Speichern der
Dokument-Daten.
Danach folgt die Klasse CDVBasisView. Wenn Sie sich diese Klasse genau ansehen
werden Sie dort eine bekannte Methode wiederfinden, die Methode PreCreateWindow(...). Was in
dieser Methode erledigt werden kann sollten Sie in der Zwischenzeit wissen. Neu ist
in dieser Klasse ist unter anderem auch die Methode OnDraw(...). Sie ist das View-Gegenstück zur OnPaint(...)
Methode eines normalen Fensters, d.h. innerhalb dieser Methode werden die Dokument-Daten
im Fenster (das jetzt View heißt) dargestellt.
Die letzte Klasse CMainFrame ist die Klasse für das Hauptfenster der
Anwendung. Auch hier sollte Ihnen (fast) alles bekannt vorkommen.
Und noch ein Hinweis: Wenn Sie sich die drei letzten Klassen oben nochmals ansehen
werden Sie feststellen, dass sie alle die Methoden AssertValid(...) und Dump(...)
enthalten. Diese Methoden waren zwar auch schon bei Anwendungen ohne Doc/View Modell
vorhanden, wurden dort aber übergangen. Bei den Tipps&Tricks zu diesem Kapitel werden
wir uns nun aber ansehen, wofür diese Methode eingesetzt werden können.
Damit beenden wir die Übersicht über das Doc/View Modell. In der nächsten Lektion
werden wir uns nochmals mit der Applikationsklasse befassen.
|