次の方法で共有


ドキュメント/ビュー アーキテクチャの代替手段

MFC アプリケーションでは、通常、ユーザーがデータの情報、ファイル形式とビジュアル表示を管理するには、ドキュメント/ビュー アーキテクチャを使用します。 デスクトップ アプリケーションの大部分では、ドキュメント/ビュー アーキテクチャは適切かつ効率的なアプリケーション アーキテクチャです。 このアーキテクチャにより、表示から別のデータが、ほとんどの場合、アプリケーションを簡略化し、詳細なコードが減少します。

ただし、ドキュメント/ビュー アーキテクチャは、状況に適しているわけではありません。 これらの例について考えます。:

  • Windows 向けの C で記述されたアプリケーションを移植する場合、ドキュメント/ビュー アプリケーションにサポートを追加する前にポートが完了する場合があります。

  • 軽量ユーティリティを作成する場合は、ドキュメント/ビュー アーキテクチャを含まないできることに気付くことがあります。

  • 元のコードがデータ表示に既にデータ管理を混在させると、ドキュメント/ビュー モデルに移行すると、作業の 2 を分けなければ必要があるため甲斐はありません。 なるようにコードを残すようにすることがあります。

ドキュメント/ビュー アーキテクチャを使用するアプリケーションを作成するには、MFC アプリケーション ウィザードの手順 1 で ドキュメント/ビュー アーキテクチャのサポート(V) チェック ボックスをオフにします。 詳細については MFC アプリケーション ウィザード を参照してください。

注意

MFC アプリケーション ウィザードで生成されたベースのアプリケーションでは、ドキュメント/ビュー アーキテクチャを使用しないので、ダイアログのアプリケーションの種類を選択 ドキュメント/ビュー アーキテクチャのサポート(V) のチェック ボックスが無効になります。

だけが他のウィザードで生成されたアプリケーションと同様に、Visual C++ のウィザード、ソースとダイアログ エディターで生成されたアプリケーションを使用します。 アプリケーションでは、ScrollBar とステータス バーをサポートする [バージョン情報] ボックスがあります。 アプリケーションでは、ドキュメント テンプレートを登録されず、ドキュメント クラスが含まれていません。

CChildViewCWndでの派生と生成されたアプリケーションを持つビュー クラスです。 MFC は、アプリケーションによって作成されたフレーム ウィンドウ内のビュー クラスのインスタンスを 1 つ作成して配置します。 MFC は、ビュー ウィンドウを使用してアプリケーションのコンテンツの配置と管理を容易にするため、適用されます。 このクラスの OnPaint のメンバーに描画コードを追加できます。 コードはフレームではなくビューにスクロール バーを追加する必要があります。

アプリケーションで複数の重要な機能の実装を行うことをドキュメント/ビュー アーキテクチャが MFC でアプリケーションの基本的な機能の多くを、プロジェクトの欠落実装する必要があることを意味します。指定したため、T:

  • その場合、MFC アプリケーション ウィザードによって、アプリケーションのメニューは ファイル メニューの New と Exit コマンドが含まれています。(New コマンドはドキュメント/ビューをサポートしない MDI アプリケーション、SDI アプリケーションでのみサポートされます。生成されたメニュー リソースは MRU (最後に使用した一覧) をサポートしていません。

  • アプリケーションがサポートする 開く などのコマンドのハンドラー関数と実装と ファイル メニューの [保存] を追加する必要があります。 MFC では、通常、これらの機能をサポートするコードを提供しますが、サポートでは、ドキュメント/ビュー アーキテクチャに厳密にバインドされます。

  • 1 を要求された場合は、アプリケーションのツール バーはごくわずかです。

ウィザードが正しい MFC アーキテクチャを保証するようにドキュメント/ビュー アーキテクチャを含まないアプリケーションを作成するには、MFC アプリケーション ウィザードを使用することを強くお勧めします。 ただし、ウィザードの使用を避ける必要があるコードのドキュメント/ビュー アーキテクチャをバイパスするための方法を次に示します。:

  • ドキュメントを未使用のアタッチのものとして扱い、前に指定されているように、クラスのデータ管理コードを、実装してください。 ドキュメントのオーバーヘッドは比較的少ないです。 CDocument 単一のオブジェクトは CDocument 基本クラス、CCmdTargetCObjectの小さなオーバーヘッドと少しオーバーヘッドが、単独でかかります。 後者のクラスの両方が小さいです。

    CDocumentで宣言された:

    • CString の 2 つがオブジェクト。

    • 3 BOOLs。

    • CDocTemplate の 1 種類のポインター。

    • ドキュメントのビューの一覧を含む CPtrList の 1 つがオブジェクトです。

    また、ドキュメント オブジェクトは、ドキュメント、ビュー オブジェクト、フレーム ウィンドウ、ドキュメント テンプレート オブジェクトを作成する時間を要します。

  • 未使用のアタッチ物としてドキュメントやビューの両方を扱います。 ビューではなく、フレーム ウィンドウにデータ管理および描画コードを記述します。 この方法は、C 言語プログラミング モデルの近くにあります。

  • これらのオブジェクトを作成することを削除するには、ドキュメントとビューを作成する MFC フレームワークの一部をオーバーライドします。 ドキュメントの作成が CWinApp::AddDocTemplateの呼び出しで開始されます。 その呼び出しをアプリケーション クラスの InitInstance のメンバー関数から削除し、その代わり InitInstance 独自にフレーム ウィンドウを作成します。 フレーム ウィンドウ クラスにデータ管理コードを配置します。 ドキュメント/ビューの作成手順は ドキュメント/ビューの作成で説明します。 これは、追加作業を、フレームワークにより詳しい知識が必要となるため、ドキュメント/ビュー オーバーヘッドが完全になります。

記事 MFC: ドキュメントとビューを用いないデータベース クラスの使用" はデータベース アプリケーションのコンテキストでドキュメント/ビューの代わりに具体的な例を示します。

参照

概念

ドキュメント/ビュー アーキテクチャ