次の方法で共有


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

更新 : 2007 年 11 月

MFC フレームワークの中核となるのは、ドキュメントとビューの概念です。ドキュメントとは、編集時にユーザーと対話するデータ オブジェクトです。ドキュメントは、[ファイル] メニューの [新規作成] または [開く] を選択すると作成され、通常、ファイルに保存されます。CDocument クラスから派生した標準 MFC ドキュメントと、Active ドキュメントまたは OLE 複合ドキュメントを混同しないでください。ビューは、ユーザーとドキュメント間の対話用のウィンドウ オブジェクトです。

動作中のアプリケーションでキーとなるオブジェクトを以下に示します。

  • ドキュメント

    アプリケーションのデータを表すドキュメント クラス (CDocument の派生クラス) です。

    アプリケーションに OLE 機能を持たせるには、必要な機能に応じて、COleDocument クラスまたはその派生クラスからドキュメント クラスを派生させます。

  • ビュー

    ビュー クラス (CView の派生クラス) は、"データ上のウィンドウ" です。ビュー クラスでは、ドキュメントのデータをどのように見せ、ユーザーとどのようにやり取りするかを指定します。ドキュメントにデータの複数のビューを持たせることもできます。

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

  • フレーム ウィンドウ

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

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

    ドキュメント テンプレートは、ドキュメント、ビュー、フレーム ウィンドウを組織的に作成します。ドキュメント テンプレート クラスは、CDocTemplate クラスからの派生クラスであり、1 つの型のすべてのドキュメントを作成し、開いているドキュメントを管理します。2 つ以上のドキュメント タイプをサポートするアプリケーションは、複数のドキュメント テンプレートを持ちます。SDI アプリケーションでは CSingleDocTemplate クラス、MDI アプリケーションでは CMultiDocTemplate クラスを使用します。

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

    アプリケーション クラス (CWinApp の派生クラス) は、上のすべてのオブジェクトを管理し、初期化やクリーンアップなどのアプリケーションの動作を指定します。アプリケーションでサポートするドキュメント型に対応したドキュメント テンプレートの作成および管理は、そのアプリケーションがただ 1 つしか持っていないアプリケーション オブジェクトによって行われます。

  • スレッド オブジェクト

    複数のスレッドを実行する場合 (バックグラウンドで計算する場合など) は、CWinThread クラスの派生クラスを使用します。CWinApp クラスも CWinThread クラスからの派生クラスであり、アプリケーションのプライマリ スレッドを表します。MFC ではセカンダリ スレッドも使用できます。

動作中のアプリケーションにおいて、これらのオブジェクトは協力してユーザーの操作に応答し、コマンドなどのメッセージによって相互に連係します。1 つのアプリケーション オブジェクトは、1 つ以上のドキュメント テンプレートを管理します。それぞれのドキュメント テンプレートは、1 つ以上 (アプリケーションが SDI か MDI かによる) のドキュメントを作成、管理します。ユーザーは、フレーム ウィンドウ内のビューを見ながら、ドキュメントを操作します。SDI アプリケーションにおけるこれらのオブジェクトの関係を次の図に示します。

動作中の SDI アプリケーションのオブジェクト
SDI アプリケーション オブジェクトの実行

これ以降は、フレームワーク ツール (MFC アプリケーション ウィザード、およびリソース エディタ) によるこれらのオブジェクトの作成方法、フレームワーク ツール間の連携動作、プログラミング時のフレームワーク ツールの使い方について説明します。ドキュメント、ビュー、およびフレーム ウィンドウについては、「ウィンドウ オブジェクト」と「ドキュメント/ビュー アーキテクチャ」で詳しく説明します。

参照

概念

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