CDocument クラス

更新 : 2007 年 11 月

ユーザーが定義するドキュメント クラスの基本機能が用意されています。

class CDocument : public CCmdTarget

解説

ドキュメントとは、通常、[ファイル] メニューの [開く] コマンドより開き、[上書き保存] で保存するデータの単位です。

CDocument は、ドキュメントの新規作成、読み込み、保存のような標準の操作をサポートします。フレームワークは、CDocument で定義されたインターフェイスを使って、ドキュメントを操作します。

アプリケーションは 1 つ以上のドキュメントの型をサポートできます。たとえば、アプリケーションはスプレッドシートとテキスト ドキュメントの両方をサポートすることがあります。それぞれのドキュメントの型は、関連付けられたドキュメント テンプレートを持ちます。このドキュメント テンプレートは、ドキュメントの型がどのようなリソース (メニュー、アイコン、アクセラレータ テーブルなど) を使うかを指定します。それぞれのドキュメントは、それに関連付けられた CDocTemplate オブジェクトへのポインタを持っています。

ドキュメントに関連付けられた CView オブジェクトを使って、ドキュメントとやりとりをします。ビューはフレーム ウィンドウにドキュメント イメージを渡し、ドキュメントへの操作としてのユーザー入力を解釈します。ドキュメントは、それに関連付けられた複数のビューを持つことができます。ウィンドウにドキュメントを開くとき、フレームワークはビューを作成して、それをドキュメントにアタッチします。ドキュメント テンプレートは、それぞれのドキュメントの型が表示されるときに使われるビューの型とフレーム ウィンドウの型を指定します。

ドキュメントは、フレームワークの標準コマンド ルーティングの一部であり、したがって [ファイル] メニューの [上書き保存] メニュー項目などの標準ユーザー インターフェイスのコンポーネントからコマンドを受け取ります。ドキュメントは、アクティブなビューから転送されたコマンドを受け取ります。ドキュメントが渡されたコマンドを処理しないと、それを管理しているドキュメント テンプレートにそのコマンドが転送されます。

ドキュメントのデータが変更されるとき、そのビューにそれぞれ変更を反映させる必要があります。CDocument は、変更をビューに通知するための UpdateAllViews メンバ関数を用意しています。したがって、ビューは必要に応じてそれぞれ再描画されます。フレームワークはドキュメントが閉じられる前に、変更されたファイルを保存するかどうかをユーザーに確認します。

一般的なアプリケーションでドキュメントを実装するには、次のようにします。

  • ドキュメントの種類ごとに CDocument の派生クラスを用意します。

  • 各ドキュメントのデータを格納するためのメンバ変数を追加します。

  • ドキュメントのデータの読み込み、変更をするメンバ関数を実装します。ドキュメントのビューはこれらのメンバ関数の最も重要なユーザーです。

  • ドキュメントのデータをディスクとの間で読み込み、書き込みをするために、ドキュメント クラスで CObject::Serialize メンバ関数をオーバーライドします。

メール サポート (MAPI) が存在する場合、CDocument はメールを使用してドキュメントの送信をサポートします。「MAPI」と「MFC での MAPI サポート」を参照してください。

CDocument クラスの詳細については、「シリアル化」、「ドキュメント/ビュー アーキテクチャ」および「ドキュメントおよびビューの作成」を参照してください。

必要条件

ヘッダー : afxwin.h

参照

処理手順

MDIDOCVW サンプル : ドキュメント/ビュー アーキテクチャを使用する MDI

SNAPVW サンプル : フォーム ビュー アプリケーションでのプロパティ ページの使用

NPP サンプル : Windows メッセージ API (MAPI)

参照

CCmdTarget クラス

階層図

CCmdTarget クラス

CView クラス

CDocTemplate クラス

その他の技術情報

CDocument のメンバ