ドキュメント/ビュー アーキテクチャの代替手段
MFC アプリケーションでは、通常、ユーザーがデータの情報、ファイル形式とビジュアル表示を管理するには、ドキュメント/ビュー アーキテクチャを使用します。 デスクトップ アプリケーションの大部分では、ドキュメント/ビュー アーキテクチャは適切かつ効率的なアプリケーション アーキテクチャです。 このアーキテクチャにより、表示から別のデータが、ほとんどの場合、アプリケーションを簡略化し、詳細なコードが減少します。
ただし、ドキュメント/ビュー アーキテクチャは、状況に適しているわけではありません。 これらの例について考えます。:
Windows 向けの C で記述されたアプリケーションを移植する場合、ドキュメント/ビュー アプリケーションにサポートを追加する前にポートが完了する場合があります。
軽量ユーティリティを作成する場合は、ドキュメント/ビュー アーキテクチャを含まないできることに気付くことがあります。
元のコードがデータ表示に既にデータ管理を混在させると、ドキュメント/ビュー モデルに移行すると、作業の 2 を分けなければ必要があるため甲斐はありません。 なるようにコードを残すようにすることがあります。
ドキュメント/ビュー アーキテクチャを使用するアプリケーションを作成するには、MFC アプリケーション ウィザードの手順 1 で ドキュメント/ビュー アーキテクチャのサポート(V) チェック ボックスをオフにします。 詳細については MFC アプリケーション ウィザード を参照してください。
注意
MFC アプリケーション ウィザードで生成されたベースのアプリケーションでは、ドキュメント/ビュー アーキテクチャを使用しないので、ダイアログのアプリケーションの種類を選択 ドキュメント/ビュー アーキテクチャのサポート(V) のチェック ボックスが無効になります。
だけが他のウィザードで生成されたアプリケーションと同様に、Visual C++ のウィザード、ソースとダイアログ エディターで生成されたアプリケーションを使用します。 アプリケーションでは、ScrollBar とステータス バーをサポートする [バージョン情報] ボックスがあります。 アプリケーションでは、ドキュメント テンプレートを登録されず、ドキュメント クラスが含まれていません。
CChildViewの CWndでの派生と生成されたアプリケーションを持つビュー クラスです。 MFC は、アプリケーションによって作成されたフレーム ウィンドウ内のビュー クラスのインスタンスを 1 つ作成して配置します。 MFC は、ビュー ウィンドウを使用してアプリケーションのコンテンツの配置と管理を容易にするため、適用されます。 このクラスの OnPaint のメンバーに描画コードを追加できます。 コードはフレームではなくビューにスクロール バーを追加する必要があります。
アプリケーションで複数の重要な機能の実装を行うことをドキュメント/ビュー アーキテクチャが MFC でアプリケーションの基本的な機能の多くを、プロジェクトの欠落実装する必要があることを意味します。指定したため、T:
その場合、MFC アプリケーション ウィザードによって、アプリケーションのメニューは ファイル メニューの New と Exit コマンドが含まれています。(New コマンドはドキュメント/ビューをサポートしない MDI アプリケーション、SDI アプリケーションでのみサポートされます。生成されたメニュー リソースは MRU (最後に使用した一覧) をサポートしていません。
アプリケーションがサポートする 開く などのコマンドのハンドラー関数と実装と ファイル メニューの [保存] を追加する必要があります。 MFC では、通常、これらの機能をサポートするコードを提供しますが、サポートでは、ドキュメント/ビュー アーキテクチャに厳密にバインドされます。
1 を要求された場合は、アプリケーションのツール バーはごくわずかです。
ウィザードが正しい MFC アーキテクチャを保証するようにドキュメント/ビュー アーキテクチャを含まないアプリケーションを作成するには、MFC アプリケーション ウィザードを使用することを強くお勧めします。 ただし、ウィザードの使用を避ける必要があるコードのドキュメント/ビュー アーキテクチャをバイパスするための方法を次に示します。:
ドキュメントを未使用のアタッチのものとして扱い、前に指定されているように、クラスのデータ管理コードを、実装してください。 ドキュメントのオーバーヘッドは比較的少ないです。 CDocument 単一のオブジェクトは CDocument 基本クラス、CCmdTarget と CObjectの小さなオーバーヘッドと少しオーバーヘッドが、単独でかかります。 後者のクラスの両方が小さいです。
CDocumentで宣言された:
CString の 2 つがオブジェクト。
3 BOOLs。
CDocTemplate の 1 種類のポインター。
ドキュメントのビューの一覧を含む CPtrList の 1 つがオブジェクトです。
また、ドキュメント オブジェクトは、ドキュメント、ビュー オブジェクト、フレーム ウィンドウ、ドキュメント テンプレート オブジェクトを作成する時間を要します。
未使用のアタッチ物としてドキュメントやビューの両方を扱います。 ビューではなく、フレーム ウィンドウにデータ管理および描画コードを記述します。 この方法は、C 言語プログラミング モデルの近くにあります。
これらのオブジェクトを作成することを削除するには、ドキュメントとビューを作成する MFC フレームワークの一部をオーバーライドします。 ドキュメントの作成が CWinApp::AddDocTemplateの呼び出しで開始されます。 その呼び出しをアプリケーション クラスの InitInstance のメンバー関数から削除し、その代わり InitInstance 独自にフレーム ウィンドウを作成します。 フレーム ウィンドウ クラスにデータ管理コードを配置します。 ドキュメント/ビューの作成手順は ドキュメント/ビューの作成で説明します。 これは、追加作業を、フレームワークにより詳しい知識が必要となるため、ドキュメント/ビュー オーバーヘッドが完全になります。
記事 MFC: ドキュメントとビューを用いないデータベース クラスの使用" はデータベース アプリケーションのコンテキストでドキュメント/ビューの代わりに具体的な例を示します。