ドキュメント、ビュー、フレームワーク

MFC フレームワークの中核となるのは、ドキュメントとビューの概念です。 ドキュメントは、ユーザーが編集セッション内で操作するデータ オブジェクトです。 これは、[ファイル] メニューの [新規] または [開く] コマンドによって作成され、通常はファイルに保存されます (クラス CDocumentから派生した標準 MFC ドキュメントは、Active ドキュメントおよび OLE 複合ドキュメントとは異なります)。ビューは、ユーザーがドキュメントを操作するウィンドウ オブジェクトです。

実行中のアプリケーションの主要なオブジェクトは次のとおりです。

  • スレッド オブジェクト

    バックグラウンドで計算を実行するためなどに、アプリケーションで個別の実行スレッドを作成する場合は、CWinThread から派生したクラスを使用します。 CWinApp 自体は CWinThread から派生し、アプリケーションのプライマリ実行スレッド (つまりメイン プロセス) を表します。 セカンダリ スレッドで MFC を使用することもできます。

  • アプリケーション オブジェクト

    (CWinApp から派生した) アプリケーション クラスは、上のすべてのオブジェクトを制御し、初期化やクリーンアップなどのアプリケーションの動作を指定します。 アプリケーションの唯一のアプリケーション オブジェクトが、アプリケーションがサポートするすべてのドキュメントの種類のドキュメント テンプレートを作成および管理します。

  • ドキュメント テンプレート

    ドキュメント テンプレートは、ドキュメント、ビュー、およびフレーム ウィンドウの作成を調整します。 クラス CDocTemplate から派生した特定のドキュメントテンプレート クラスは、1 つの種類の開かれているドキュメントをすべて作成および管理します。 複数の種類のドキュメントをサポートするアプリケーションには、複数のドキュメント テンプレートがあります。 SDI アプリケーションの場合は CSingleDocTemplate クラスを使用し、MDI アプリケーションの場合は CMultiDocTemplate クラスを使用します。

  • フレーム ウィンドウ

    ビューは、"ドキュメント フレーム ウィンドウ" 内に表示されます。SDI アプリケーションでは、ドキュメント フレーム ウィンドウはアプリケーションの "メイン フレーム ウィンドウ" でもあります。 MDI アプリケーションでは、ドキュメント ウィンドウはメイン フレーム ウィンドウ内に表示される子ウィンドウです。 派生メインフレーム ウィンドウ クラスでは、ビューを含むフレーム ウィンドウのスタイルとその他の特性を指定します。 フレーム ウィンドウをカスタマイズする必要がある場合、SDI アプリケーションでは、CFrameWnd から派生させて、ドキュメント フレーム ウィンドウをカスタマイズします。 MDI アプリケーションでは、CMDIFrameWnd から派生させて、メイン フレーム ウィンドウをカスタマイズします。 また、CMDIChildWnd からクラスを派生させて、アプリケーションがサポートする各種の MDI ドキュメント フレーム ウィンドウをカスタマイズします。

  • ドキュメント。

    (CDocument から派生した) ドキュメント クラスでは、アプリケーションのデータを指定します。

    アプリケーション内で OLE 機能が必要な場合は、必要な機能の種類に応じて、COleDocument またはその派生クラスのいずれかからドキュメント クラスを派生させます。

  • ビュー。

    (CView から派生した) ビュー クラスは、ユーザーの "データに関するウィンドウ" です。ビュー クラスでは、ユーザーがドキュメントのデータを確認し、それを操作する方法を制御します。 場合によっては、ドキュメントにデータの複数のビューを含めることが必要な場合があります。

    スクロールが必要な場合は、CScrollView から派生させます。 ダイアログテンプレート リソースにレイアウトされたユーザー インターフェイスがビューにある場合は、CFormView から派生させます。 単純なテキスト データの場合は、CEditView を使用するか、そこから派生させます。 データ入力プログラムなど、フォームベースのデータアクセスアプリケーションの場合は、CRecordView から派生させます (ODBC の場合)。 クラス CTreeViewCListView、および CRichEditView も使用できます。

実行中のアプリケーションでは、これらのオブジェクトは、コマンドやその他のメッセージによって連結されたユーザー操作に協調的に応答します。 1 つのアプリケーション オブジェクトが 1 つ以上のドキュメント テンプレートを管理します。 各ドキュメント テンプレートでは、1 つまたは複数のドキュメントを作成および管理します (アプリケーションが SDI と MDI のどちらであるかによって異なります)。 ユーザーは、フレーム ウィンドウ内に含まれているビューを使用してドキュメントを表示および操作します。 次の図は、SDI アプリケーションにおけるこれらのオブジェクト間の関係を示しています。

Diagram of the objects in a running SDI application.
動作中の SDI アプリケーションのオブジェクト

この一連の記事の残りの部分では、フレームワーク ツール、MFC アプリケーション ウィザード、およびリソース エディターを使用して、これらのオブジェクトを作成する方法、それらを連携させる方法、およびプログラミングでそれらを使用する方法について説明します。 ドキュメント、ビュー、フレーム ウィンドウの詳細については、「ウィンドウ オブジェクト」および「ドキュメント/ビュー アーキテクチャ」を参照してください。

関連項目

クラスを使用した Windows アプリケーションの作成