Ü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.

Doc/View Modell auswählen

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.

Die Dokumentenverknüpfung

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.

Die Ansichtsklassen

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:

Klassen des Doc/View Modells

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.



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