ドキュメント/ビュー アーキテクチャの全体像
一般的な MFC アプリケーションでは、ドキュメントとビューはペアになっています。 データはドキュメントに格納されますが、ビューにはデータにアクセスする権限があります。 ドキュメントをビューから分離することで、データの格納や保守の処理をデータ表示の処理から分離できます。
ビューからドキュメント データへのアクセスの取得
ビューは、ドキュメントのデータにアクセスするために、ドキュメントへのポインターを返す GetDocument 関数を使うか、またはビュー クラスをドキュメント クラスのフレンド クラス (C++ でのクラス概念) にします。 その後、ビューは、データへのアクセスによって、描画または操作の準備が済んだ時点のデータを取得します。
たとえば、ビューの OnDraw メンバー関数で、ビューは GetDocument 関数を使ってドキュメントへのポインターを取得します。 次に、このポインターを使って、ドキュメント内の CString データ メンバーにアクセスします。 ビューは、この文字列を TextOut 関数に渡します。 サンプル コードについては、「ビューの描画」を参照してください。
ビューへのユーザー入力
ビューでは、マウス クリックをデータの選択または編集として解釈できます。 同じように、キーストロークをデータの入力または編集として解釈できます。 たとえば、テキストを管理するビューの中に、ユーザーが文字列を入力する場合を考えてみます。 ビューはドキュメントへのポインターを取得し、それを使って新しいデータをドキュメントに渡します。ドキュメントでは、渡されたデータがデータ構造体に格納されます。
同一ドキュメントのマルチ ビューの更新
テキスト エディターの分割ウィンドウなど、同一ドキュメントのマルチ ビューを表示するアプリケーションでは、ビューはまず新しいデータをドキュメントに渡します。 次に、ドキュメントの UpdateAllViews メンバー関数を呼び出すと、ドキュメントの各ビューに、新しいデータを反映して更新するように通知が送られます。 このようにして、ビューの同期がとられます。