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