Ein Portrait der Dokument-/Ansichtarchitektur
Dokumente und Ansichten werden in einer typischen MFC-Anwendung gekoppelt. Daten werden im Dokument gespeichert, aber die Ansicht hat privilegierten Zugriff auf die Daten. Die Trennung des Dokuments von der Ansicht trennt die Speicherung und Standard der Datenabgrenzung von der Anzeige.
Zugriff auf Dokumentdaten aus der Ansicht erhalten
Die Ansicht greift auf die Daten des Dokuments mit der GetDocument-Funktion zu, die einen Zeiger auf das Dokument zurückgibt, oder indem die Ansichtsklasse als C++ friend
der Dokumentklasse festgelegt wird. Die Ansicht verwendet dann ihren Zugriff auf die Daten, um die Daten abzurufen, wenn sie zum Zeichnen oder anderweitigen Bearbeiten bereit ist.
Beispielsweise wird GetDocument
in der OnDraw-Memberfunktion der Ansicht ein Dokumentzeiger abgerufen. Anschließend wird dieser Zeiger verwendet, um auf ein CString
Datenelement im Dokument zuzugreifen. Die Ansicht übergibt die Zeichenfolge an die TextOut
Funktion. Informationen zum Anzeigen des Codes für dieses Beispiel finden Sie unter Zeichnen in einer Ansicht.
Benutzereingabe für die Ansicht
Die Ansicht interpretiert möglicherweise auch einen Mausklick in sich selbst als Auswahl oder Bearbeitung von Daten. Auf ähnliche Weise können Tastenanschläge als Dateneingabe oder -bearbeitung interpretiert werden. Angenommen, der Benutzer gibt eine Zeichenfolge in einer Ansicht ein, die Text verwaltet. Die Ansicht ruft einen Zeiger auf das Dokument ab und verwendet den Zeiger, um die neuen Daten an das Dokument zu übergeben, wodurch sie in einer bestimmten Datenstruktur gespeichert wird.
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 wird die UpdateAllViews-Memberfunktion des Dokuments aufgerufen, die alle Ansichten des Dokuments angibt, sich selbst zu aktualisieren und die neuen Daten widerzuspiegeln. Dadurch werden die Ansichten synchronisiert.