Ein Portrait der Dokument-/Ansichtarchitektur

Dokumente und Ansichten werden in einer typischen MFC-Anwendung gekoppelt. Daten werden im Dokument gespeichert, aber die Sicht hat privilegierten Zugriff auf die Daten. Die Trennung von Dokument und Ansicht trennt die Speicherung und Wartung von Daten von der Anzeige.

Abrufen des Zugriffs auf Dokumentdaten aus der Ansicht

Die Sicht greift entweder mit der GetDocument-Funktion auf die Daten ihres Dokuments zu, die einen Zeiger auf das Dokument zurückgibt, oder indem sie die Ansichtsklasse zu einem C++ friend der Dokumentklasse macht. Die Sicht verwendet dann ihren Zugriff auf die Daten, um die Daten abzurufen, wenn sie zum Zeichnen oder anderweitigen Bearbeiten bereit sind.

Beispielsweise verwendet die Ansicht aus der OnDraw-Memberfunktion der Ansicht , GetDocument um einen Dokumentzeiger abzurufen. Anschließend wird dieser Zeiger verwendet, um auf einen CString Datenmember im Dokument zuzugreifen. Die Ansicht übergibt die Zeichenfolge an die TextOut Funktion. Den Code für dieses Beispiel finden Sie unter Zeichnen in einer Ansicht.

Benutzereingabe in die Ansicht

Die Ansicht kann auch einen Mausklick in sich selbst als Auswahl oder Bearbeitung von Daten interpretieren. Ebenso kann es Tastatureingaben als Dateneingabe oder -bearbeitung interpretieren. Angenommen, der Benutzer gibt eine Zeichenfolge in eine Ansicht ein, die Text verwaltet. Die Sicht ruft einen Zeiger auf das Dokument ab und verwendet den Zeiger, um die neuen Daten an das Dokument zu übergeben, das es in einer Datenstruktur speichert.

Aktualisieren mehrerer Ansichten desselben Dokuments

In einer Anwendung mit mehreren Ansichten desselben Dokuments , z. B. einem Splitterfenster in einem Text-Editor, übergibt die Ansicht zuerst die neuen Daten an das Dokument. Anschließend ruft es die UpdateAllViews-Memberfunktion des Dokuments auf, die alle Ansichten des Dokuments angibt, sich selbst zu aktualisieren und die neuen Daten widerzuspiegeln. Dadurch werden die Ansichten synchronisiert.

Worüber möchten Sie mehr wissen?

Siehe auch

Dokument-/Ansichtsarchitektur