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)