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

標準的な MFC アプリケーションでは、ドキュメントとビューが対になっています。 データはドキュメントに格納されますが、ビューには、そのデータへの特権アクセスがあります。 ドキュメントとビューが分離されていることで、データの格納と保守がその表示から切り離されます。

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

ビューから、そのドキュメントのデータにアクセスする際は、ドキュメントへのポインターを返す GetDocument 関数を使用するか、ビュー クラスをドキュメント クラスの C++ friend にします。 ビューは、描画または他のなんらかの方法で操作する準備が整うと、そのデータ アクセスを使用してデータを取得します。

たとえば、ビューの OnDraw メンバー関数から GetDocument を使用してドキュメントのポインターを取得します。 その後、そのポインターを使用して、ドキュメントの CString データ メンバーにアクセスします。 ビューは、その文字列を TextOut 関数に渡します。 この例のコードは、「ビューの描画」でご覧いただけます。

ビューへのユーザー入力

ビューは、その中で受け取ったマウス クリックをデータの選択または編集として解釈することもあります。 同様に、キーボード操作をデータ入力または編集として解釈することもあります。 テキストを管理するビューに対し、ユーザーが文字列を入力するとします。 ビューは、ドキュメントへのポインターを取得し、それを使って新しいデータをドキュメントに渡します。そしてドキュメントは、受け取ったデータをなんらかのデータ構造に格納します。

同じドキュメントの複数のビューの更新

テキスト エディターのスプリッター ウィンドウなど、同じドキュメントの複数のビューを備えたアプリケーションでは、ビューがまず新しいデータをドキュメントに渡します。 その後、ドキュメントの UpdateAllViews メンバー関数を呼び出すと、ビューを更新して新しいデータを反映するよう、ドキュメントのすべてのビューに伝えられます。 これによってそれらのビューが同期されます。

さらに詳しい情報

関連項目

ドキュメントおよびビュー アーキテクチャ