ドキュメント/ビュー アーキテクチャの全体像

更新 : 2007 年 11 月

一般的な MFC アプリケーションでは、ドキュメントとビューはペアになっています。データはドキュメントに格納されますが、ビューにはデータにアクセスする権限があります。ドキュメントをビューから分離することで、データの格納や保守の処理をデータ表示の処理から分離できます。

ビューからドキュメント データへのアクセスの取得

ビューは、ドキュメントのデータにアクセスするために、ドキュメントへのポインタを返す GetDocument 関数を使うか、またはビュー クラスをドキュメント クラスのフレンド クラス (C++ でのクラス概念) にします。その後、ビューは、データへのアクセスによって、描画または操作の準備が済んだ時点のデータを取得します。

たとえば、ビューの OnDraw メンバ関数で、ビューは GetDocument 関数を使ってドキュメントへのポインタを取得します。次に、このポインタを使って、ドキュメント内の CString データ メンバにアクセスします。ビューは、この文字列を TextOut 関数に渡します。サンプル コードについては、「ビューの描画」を参照してください。

ビューへのユーザー入力

ビューでは、マウス クリックをデータの選択または編集として解釈できます。同じように、キーストロークをデータの入力または編集として解釈できます。たとえば、テキストを管理するビューの中に、ユーザーが文字列を入力する場合を考えてみます。ビューはドキュメントへのポインタを取得し、それを使って新しいデータをドキュメントに渡します。ドキュメントでは、渡されたデータがデータ構造体に格納されます。

同一ドキュメントのマルチ ビューの更新

テキスト エディタの分割ウィンドウなど、同一ドキュメントのマルチ ビューを表示するアプリケーションでは、ビューはまず新しいデータをドキュメントに渡します。次に、ドキュメントの UpdateAllViews メンバ関数を呼び出すと、ドキュメントの各ビューに、新しいデータを反映して更新するように通知が送られます。このようにして、ビューの同期がとられます。

さらに詳しくは次のトピックをクリックしてください

参照

概念

ドキュメント/ビュー アーキテクチャ