ドキュメント/ビュー アーキテクチャの全体像
ドキュメントとビューは、一般的な MFC アプリケーションでペアにされています。 データはドキュメントに格納されますが、ビューにはデータへの特権アクセス権があります。 ドキュメントをビューから分離すると、データの保存とメンテナンスが表示から分離されます。
ビューからドキュメント データにアクセスする
ビューは 、GetDocument 関数を使用してドキュメントのデータにアクセスします。GetDocument 関数は、ドキュメントへのポインターを返します。または、ビュー クラスをドキュメント クラスの C++ に設定します 。 その後、ビューはデータへのアクセスを使用して、データを描画または操作する準備ができたらデータを取得します。
たとえば、ビューの OnDraw メンバー関数から、ビューは を使用 してドキュメント ポインターを取得します。 その後、そのポインターを使用して、ドキュメント CString 内のデータ メンバーにアクセスします。 ビューは文字列を 関数に渡 TextOut します。 この例のコードを確認するには、「ビューでの 描画」を参照してください。
ビューへのユーザー入力
ビューでは、マウスクリック自体がデータの選択または編集として解釈される場合もあります。 同様に、キーストロークはデータ入力または編集として解釈される場合があります。 ユーザーがテキストを管理する文字列をビューに入力したとします。 ビューはドキュメントへのポインターを取得し、 ポインターを使用して新しいデータをドキュメントに渡し、それを何らかのデータ構造に格納します。
同じドキュメントの複数のビューの更新
テキスト エディターのスプリッター ウィンドウなど、同じドキュメントの複数のビューを持つアプリケーションでは、最初に新しいデータがドキュメント —— に渡されます。 次に、ドキュメントの UpdateAllViews メンバー関数を呼び出します。この関数は、新しいデータを反映して、ドキュメントのすべてのビューに自身を更新するように指示します。 これにより、ビューが同期されます。