既定では、MFC アプリケーション ウィザードは、ドキュメント クラスとビュー クラスを持つアプリケーション スケルトンを作成します。 MFC は、これら 2 つのクラスにデータ管理を分離します。 ドキュメントはデータを格納し、データの印刷を管理し、データの複数のビューを更新する座標を管理します。 ビューにはデータが表示され、選択や編集など、ユーザーによる操作が管理されます。
このモデルでは、MFC ドキュメント オブジェクトがデータを読み取り、永続ストレージに書き込みます。 また、ドキュメントは、データが存在する場所 (データベース内など) に対するインターフェイスを提供することもできます。 別のビュー オブジェクトは、ウィンドウ内のデータのレンダリングから、ユーザーの選択やデータの編集まで、データの表示を管理します。 ビューは、ドキュメントから表示データを取得し、データの変更をドキュメントに伝達します。
ドキュメント/ビューの分離を簡単にオーバーライドまたは無視できますが、ほとんどの場合、このモデルに従う理由は魅力的です。 最適な方法の 1 つは、スプレッドシートとグラフ ビューの両方など、同じドキュメントの複数のビューが必要な場合です。 ドキュメント/ビュー モデルを使用すると、個別のビュー オブジェクトでデータの各ビューを表すことができますが、すべてのビューに共通するコード (計算エンジンなど) はドキュメント内に存在できます。 ドキュメントでは、データが変更されるたびにすべてのビューを更新するタスクも実行されます。
MFC ドキュメント/ビュー アーキテクチャを使用すると、複数のビュー、複数のドキュメントの種類、分割ウィンドウ、およびその他の重要なユーザー インターフェイス機能を簡単にサポートできます。
MFC フレームワークの部分は、ユーザーとプログラマの両方に最も目に見える部分であり、ドキュメントとビューです。 フレームワークを使用してアプリケーションを開発する作業のほとんどは、ドキュメントの作成とクラスの表示に入ります。 この記事ファミリでは、次について説明します。
ドキュメントとビューの目的と、それらがフレームワークでどのように対話するか。
それらを実装するために必要な操作。
ドキュメント/ビューの中心には、次の 4 つの主要なクラスがあります。
CDocument (または COleDocument) クラスは、プログラムのデータを格納または制御するために使用されるオブジェクトをサポートし、プログラマ定義のドキュメント クラスの基本的な機能を提供します。 ドキュメントは、ユーザーが通常、[ファイル] メニューの [開く] コマンドで開き、[ファイル] メニューの [保存] コマンドで保存するデータの単位を表します。
CView (またはその多くの派生クラスの 1 つ) は、プログラマ定義のビュー クラスの基本的な機能を提供します。 ビューはドキュメントに添付され、ドキュメントとユーザーの間の仲介役として機能します。ビューは、ドキュメントの画像を画面上にレンダリングし、ユーザー入力をドキュメントに対する操作として解釈します。 このビューでは、印刷プレビューと印刷プレビューの両方の画像もレンダリングされます。
CFrameWnd (またはそのバリエーションの 1 つ) は、ドキュメントの 1 つ以上のビューを囲むフレームを提供するオブジェクトをサポートします。
CDocTemplate (または CSingleDocTemplate または CMultiDocTemplate) は、特定の型の 1 つ以上の既存のドキュメントを調整し、その型の正しいドキュメント、ビュー、フレーム ウィンドウ オブジェクトの作成を管理するオブジェクトをサポートします。
次の図は、ドキュメントとそのビューの関係を示しています。
です
ドキュメントとビュー
クラス ライブラリのドキュメント/ビューの実装は、データ自体を、その表示とデータに対するユーザー操作から分離します。 データに対するすべての変更は、ドキュメント クラスを通じて管理されます。 ビューはこのインターフェイスを呼び出して、データにアクセスして更新します。
ドキュメント、関連するビュー、およびビューをフレームに収めるフレーム ウィンドウは、ドキュメント テンプレートによって作成されます。 ドキュメント テンプレートは、1 つのドキュメントタイプのすべてのドキュメントを作成および管理します。
詳しく知りたいこと
こちらも参照ください
ユーザー インターフェイス要素
ウィンドウズ
フレーム ウィンドウ
ドキュメント テンプレートとドキュメント/ビュー作成プロセス
ドキュメント/ビューの作成
新しいドキュメント、Windows、ビューの作成