Alternativen zur Dokument-/Ansichtarchitektur

MFC-Anwendungen verwenden normalerweise die Dokument-/Ansichtarchitektur verwendet, um Informationen, Dateiformate und die visuelle Darstellung von Daten an Benutzer zu verwalten.Für die meisten Desktopanwendungen, ist die Dokument-/Ansichtarchitektur eine entsprechende und effiziente Anwendungsarchitektur.Diese Architektur trennt die Daten aus der Anzeige und in den meisten Fällen vereinfacht und reduziert die Anwendung redundanten Code.

Allerdings ist die Dokument-/Ansichtarchitektur nicht für einige Situationen geeignet.Berücksichtigen Sie diese Beispiele:

  • Wenn Sie eine Anwendung portieren, die in C für Windows geschrieben wird, müssen Sie den Anschluss ausführen, bevor Sie Dokument/Ansichts-Unterstützung zu einer Anwendung hinzufügen.

  • Wenn Sie ein einfaches Installationsprogramm schreiben, ohne die Dokument-/Ansichtarchitektur ausführen können.

  • Wenn der ursprünglichen Code bereits die Datenverwaltung Anzeigen von Daten kombiniert den Code zum Dokument/Ansichts-Modell ist der Mehraufwand nicht verschoben werden, da Sie die beiden getrennt werden müssen.Sie möchten ggf. vor, um den Code zu verlassen.

Um eine Anwendung zu erstellen, die nicht die Dokument-/Ansichtarchitektur verwendet, deaktivieren Sie das Kontrollkästchen Unterstützung für die Dokument-/Ansichtarchitektur in Schritt 1 des MFC-Anwendungs-Assistenten.Ausführliche Informationen finden Sie MFC-Anwendungs-Assistent.

HinweisHinweis

Die auf Dialogfeldern basierende Anwendungen, die vom MFC-Anwendungs-Assistenten erstellt werden, werden keine Dokument-/Ansichtarchitektur. Daher wird das Unterstützung für die Dokument-/Ansichtarchitektur Kontrollkästchen deaktiviert, wenn Sie den Typ Dialogfeld-Anwendungs auswählen.

Die Visual C++-Assistenten, sowie die Quelle und die Dialog-Editoren Arbeit mit der erstellten Anwendung ebenso wie sie mit jeder anderen vom Assistenten generierte Anwendung wurden.Die Anwendung kann Symbolleisten, Bildlaufleisten und unterstützen eine Statusleiste und verfügt über ein Feld Info.Ihre Anwendung registriert keine Dokumentvorlagen und enthält keine Dokumentklasse.

Beachten Sie, dass die generierte Anwendung verfügt über eine Ansichtsklasse, CChildView, abgeleitet von CWnd.MFC erstellt und eine Instanz der Positionen innerhalb der Ansichtsklasse Rahmenfenster, die von der Anwendung erstellt werden.MFC erzwingt jedoch weiterhin mithilfe des Ansichtsfensters, da es die Positionierung und zum Verwalten des Inhalts der Anwendung vereinfacht.Sie können den Zeichnungscode OnPaint-Member dieser Klasse hinzufügen.Der Code sollte statt der Ansicht Bildlaufleisten den Rahmen hinzufügen.

Da die Dokument-/Ansichtarchitektur von MFC ist verantwortlich für die Implementierung eine Vielzahl von grundlegenden Features einer Anwendung, die Abwesenheit im Projekt bereitgestellte bedeutet, dass Sie zum Implementieren von vielen wichtigen Funktionen Ihrer Anwendung verantwortlich sind:

  • Wie angegeben durch den MFC-Anwendungs-Assistenten, enthält das Menü für die Anwendung nur New und Exit Befehle im Menü Datei.(Der Befehl ist nur für MDI-Anwendungen New nicht ohne Dokument/Ansichts-Unterstützung SDI-Anwendungen) unterstützt. Die generierte Menüressource unterstützt keine (MRU Liste zuletzt verwendeter).

  • Sie müssen Handlerfunktionen und Implementierungen für alle Befehle, die von der Anwendung unterstützt, einschließlich Öffnen und Speichern im Menü Datei hinzufügen.MFC stellt normalerweise Code, um diese Features zu unterstützen, diese Unterstützung wird jedoch eng an die Dokument-/Ansichtarchitektur gebunden.

  • Die Symbolleiste für die Anwendung, wenn Sie ein angeforderten minimal ist.

Es wird dringend empfohlen, dass Sie den MFC-Anwendungs-Assistenten können Sie Anwendungen ohne Dokument-/Ansichtarchitektur zu erstellen, da der Assistent einer richtigen MFC-Architektur gewährleistet.Wenn Sie den Assistenten nicht verwenden müssen, sind hier mehrere Ansätze zur Umgehung der Dokument-/Ansichtarchitektur im Code:

  • Behandeln Sie das Dokument als nicht verwendete Anhang und implementieren Sie den Datenverwaltungs von Code in der Ansichtsklasse, wie oben vorgeschlagen.Mehraufwand für das Dokument ist relativ gering.Ein einzelnes Objekt CDocument Mehraufwand verursacht eine kleine Menge an sowie den kleinen Mehraufwand CDocuments von Basisklassen, CCmdTarget und CObject.Beide der letzten Klassen sind klein.

    Deklariert in CDocument:

    • Zwei CString-Objekten.

    • Drei BOOL s.

    • Ein Zeiger CDocTemplate.

    • Ein CPtrList-Objekt mit einer Liste der Sichten des Dokuments enthält.

    Außerdem erfordert das Dokument die Zeitdauer, das Dokumentobjekt, die Objekte anzeigen, ein Rahmenfenster und ein Dokumentvorlagen Objekt zu erstellen.

  • Behandeln Sie das Dokument als Ansicht und Anhänge nicht verwendet.Geben Sie Ihren Datenverwaltungs- und Zeichnen von Code in das Rahmenfenster, anstatt die Sicht ein.Dieser Ansatz ist näher an der C-Sprache Programmiermodell.

  • Überschreiben Sie die Teile des MFC-Frameworks, die das Dokument und die Sicht erstellen, um sie zu erstellen, beseitigen.Der Dokumenten Builds Prozess beginnt mit einem Aufruf von CWinApp::AddDocTemplate.Entfernen Sie den Aufruf von InitInstance-Memberfunktion der Anwendung Klasse und stellen Sie stattdessen ein Rahmenfenster sich in InitInstance.Geben Sie den Datenverwaltungs Code in der Rahmenfensterklasse ein.Der Dokument/Ansichts-Erstellungs Prozess wird in Dokument/Ansichts-Erstellung veranschaulicht.Hierbei handelt es sich um mehr Arbeit und erfordert ein Sie Kenntnisse des Frameworks, es ist jedoch im Dokument/Ansichts-Mehraufwand Sie vollständig freigegeben.

Der Artikel MFC: Verwenden von Datenbankklassen ohne Dokumente und Ansichten ruft konkretere Beispiele für Dokument/Ansichts-Alternativen im Kontext von Datenbankanwendungen.

Siehe auch

Konzepte

Dokument-/Ansichtarchitektur