CDocument
クラス
ユーザーが定義するドキュメント クラスの基本機能が用意されています。
構文
class CDocument : public CCmdTarget
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CDocument::CDocument |
CDocument オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CDocument::AddView |
ドキュメントにビューを添付します。 |
CDocument::BeginReadChunks |
チャンク読み取りを初期化します。 |
CDocument::CanCloseFrame |
高度なオーバーライド可能。このドキュメントを表示するフレーム ウィンドウを閉じる前に呼び出されます。 |
CDocument::ClearChunkList |
チャンク リストをクリアします。 |
CDocument::ClearPathName |
ドキュメント オブジェクトのパスをクリアします。 |
CDocument::DeleteContents |
ドキュメントのクリーンアップを実行するために呼び出されます。 |
CDocument::FindChunk |
指定された GUID を持つチャンクを検索します。 |
CDocument::GetAdapter |
インターフェイスを実装するオブジェクトへのポインター IDocument 返します。 |
CDocument::GetDocTemplate |
ドキュメントの種類を記述するドキュメント テンプレートへのポインターを返します。 |
CDocument::GetFile |
目的の CFile オブジェクトへのポインターを返します。 |
CDocument::GetFirstViewPosition |
ビューのリスト内の最初の位置を返します。繰り返しを開始するために使用されます。 |
CDocument::GetNextView |
ドキュメントに関連付けられているビューの一覧を反復処理します。 |
CDocument::GetPathName |
ドキュメントのデータ ファイルのパスを返します。 |
CDocument::GetThumbnail |
サムネイルプロバイダーがサムネイルを表示するために使用するビットマップを作成するために呼び出されます。 |
CDocument::GetTitle |
ドキュメントのタイトルを返します。 |
CDocument::InitializeSearchContent |
検索ハンドラーの検索コンテンツを初期化するために呼び出されます。 |
CDocument::IsModified |
ドキュメントが最後に保存されてから変更されたかどうかを示します。 |
CDocument::IsSearchAndOrganizeHandler |
CDocument オブジェクトのこのインスタンスが検索および整理ハンドラー用に作成されたかどうかを示します。 |
CDocument::LoadDocumentFromStream |
ストリームからドキュメント データを読み込む場合に呼び出されます。 |
CDocument::OnBeforeRichPreviewFontChanged |
リッチ プレビュー フォントが変更される前に呼び出されます。 |
CDocument::OnChangedViewList |
ビューがドキュメントに追加またはドキュメントから削除された後に呼び出されます。 |
CDocument::OnCloseDocument |
ドキュメントを閉じるには呼び出されます。 |
CDocument::OnCreatePreviewFrame |
リッチ プレビュー用のプレビュー フレームを作成する必要がある場合に、フレームワークによって呼び出されます。 |
CDocument::OnDocumentEvent |
ドキュメント イベントに応答してフレームワークによって呼び出されます。 |
CDocument::OnDrawThumbnail |
サムネイルのコンテンツを描画するには、派生クラスでこのメソッドをオーバーライドします。 |
CDocument::OnLoadDocumentFromStream |
ストリームからドキュメント データを読み込む必要があるときにフレームワークによって呼び出されます。 |
CDocument::OnNewDocument |
新しいドキュメントを作成するために呼び出されます。 |
CDocument::OnOpenDocument |
既存のドキュメントを開くために呼び出されます。 |
CDocument::OnPreviewHandlerQueryFocus |
GetFocus 関数の呼び出しからHWND を返すようにプレビュー ハンドラーに指示します。 |
CDocument::OnPreviewHandlerTranslateAccelerator |
プレビュー ハンドラーが実行されているプロセスのメッセージ ポンプから渡されたキーストロークを処理するようにプレビュー ハンドラーに指示します。 |
CDocument::OnRichPreviewBackColorChanged |
リッチ プレビューの背景色が変更されたときに呼び出されます。 |
CDocument::OnRichPreviewFontChanged |
リッチ プレビュー フォントが変更されたときに呼び出されます。 |
CDocument::OnRichPreviewSiteChanged |
リッチ プレビュー サイトが変更されたときに呼び出されます。 |
CDocument::OnRichPreviewTextColorChanged |
リッチ プレビュー テキストの色が変更されたときに呼び出されます。 |
CDocument::OnSaveDocument |
ドキュメントをディスクに保存するために呼び出されます。 |
CDocument::OnUnloadHandler |
プレビュー ハンドラーがアンロードされるときにフレームワークによって呼び出されます。 |
CDocument::PreCloseFrame |
フレーム ウィンドウを閉じる前に呼び出されます。 |
CDocument::ReadNextChunkValue |
次のチャンク値を読み取ります。 |
CDocument::ReleaseFile |
ファイルを解放して、他のアプリケーションで使用できるようにします。 |
CDocument::RemoveChunk |
指定した GUID を持つチャンクを削除します。 |
CDocument::RemoveView |
ドキュメントからビューをデタッチします。 |
CDocument::ReportSaveLoadException |
高度なオーバーライド可能。は、例外が原因で開く操作または保存操作を完了できない場合に呼び出されます。 |
CDocument::SaveModified |
高度なオーバーライド可能。を呼び出して、ドキュメントを保存するかどうかをユーザーに確認します。 |
CDocument::SetChunkValue |
チャンク値を設定します。 |
CDocument::SetModifiedFlag |
最後に保存されてから文書を変更したことを示すフラグを設定します。 |
CDocument::SetPathName |
ドキュメントで使用されるデータ ファイルのパスを設定します。 |
CDocument::SetTitle |
ドキュメントのタイトルを設定します。 |
CDocument::UpdateAllViews |
ドキュメントが変更されたすべてのビューに通知します。 |
保護メソッド
名前 | 説明 |
---|---|
CDocument::OnFileSendMail |
文書が添付されたメール メッセージを送信します。 |
CDocument::OnUpdateFileSendMail |
メール サポートが存在する場合は、メールの送信コマンドを有効にします。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
CDocument::m_bGetThumbnailMode |
dllhost によってサムネイル用 CDocument オブジェクトが作成されたことを指定します。 CView::OnDraw でチェックインする必要があります。 |
CDocument::m_bPreviewHandlerMode |
Rich Preview の prevhost によって作成されたオブジェクトCDocument 指定します。 CView::OnDraw でチェックインする必要があります。 |
CDocument::m_bSearchMode |
CDocument オブジェクトがインデクサーまたはその他の検索アプリケーションによって作成されたことを指定します。 |
CDocument::m_clrRichPreviewBackColor |
リッチ プレビュー ウィンドウの背景色を指定します。 この色はホストによって設定されます。 |
CDocument::m_clrRichPreviewTextColor |
リッチ プレビュー ウィンドウの前景色を指定します。 この色はホストによって設定されます。 |
CDocument::m_lfRichPreviewFont |
リッチ プレビュー ウィンドウのテキスト フォントを指定します。 このフォント情報はホストによって設定されます。 |
解説
ドキュメントは、ユーザーが通常、[ファイルを開く] コマンドで開き、[ファイルの保存] コマンドを使用して保存するデータの単位を表します。
CDocument
では、ドキュメントの作成、読み込み、保存などの標準的な操作がサポートされています。 フレームワークは、 CDocument
によって定義されたインターフェイスを使用してドキュメントを操作します。
アプリケーションは、複数の種類のドキュメントをサポートできます。たとえば、アプリケーションがスプレッドシートとテキスト ドキュメントの両方をサポートしている場合があります。 ドキュメントの種類ごとに、ドキュメント テンプレートが関連付けられています。ドキュメント テンプレートは、その種類のドキュメントに使用されるリソース (メニュー、アイコン、アクセラレータ テーブルなど) を指定します。 各ドキュメントには、関連付けられている CDocTemplate
オブジェクトへのポインターが含まれています。
ユーザーは、関連付けられている CView
オブジェクトを介してドキュメントを操作します。 ビューは、フレーム ウィンドウでドキュメントのイメージをレンダリングし、ユーザー入力をドキュメントの操作として解釈します。 ドキュメントには複数のビューを関連付けることができます。 ユーザーがドキュメントのウィンドウを開くと、フレームワークによってビューが作成され、ドキュメントに添付されます。 ドキュメント テンプレートでは、各種類のドキュメントを表示するために使用されるビューとフレーム ウィンドウの種類を指定します。
ドキュメントはフレームワークの標準コマンド ルーティングの一部であり、標準のユーザー インターフェイス コンポーネント ([ファイルの保存] メニュー項目など) からコマンドを受け取ります。 ドキュメントは、作業中のビューによって転送されるコマンドを受け取ります。 ドキュメントが特定のコマンドを処理しない場合は、そのコマンドを管理するドキュメント テンプレートに転送します。
ドキュメントのデータが変更されると、その各ビューにそれらの変更が反映されている必要があります。 CDocument
では、このような変更をビューに通知するための UpdateAllViews
メンバー関数が用意されているため、必要に応じてビューを再描画できます。 また、フレームワークは、変更したファイルを閉じる前に保存するようにユーザーに求めます。
一般的なアプリケーションでドキュメントを実装するには、次の操作を行う必要があります。
ドキュメントの種類ごとに
CDocument
からクラスを派生させます。各ドキュメントのデータを格納するためのメンバー変数を追加します。
ドキュメントのデータを読み取って変更するためのメンバー関数を実装します。 ドキュメントのビューは、これらのメンバー関数の最も重要なユーザーです。
ドキュメント クラスの
CObject::Serialize
メンバー関数をオーバーライドして、ディスクとの間でドキュメントのデータを書き込み、読み取ります。
CDocument
は、メール サポート (MAPI) が存在する場合に、メール経由でドキュメントを送信することをサポートします。 MFC でのMAPI サポート MAPI および MAPI のサポートに関する記事を参照。
CDocument
の詳細については、「Serialization、Document/View Architecture Topics、および Document/View Creation を参照してください。
継承階層
CDocument
要件
ヘッダー: afxwin.h
CDocument::AddView
この関数を呼び出して、ドキュメントにビューをアタッチします。
void AddView(CView* pView);
パラメーター
pView
追加するビューをポイントします。
解説
この関数は、指定したビューをドキュメントに関連付けられているビューの一覧に追加します。この関数は、ビューのドキュメント ポインターもこのドキュメントに設定します。 フレームワークは、新しく作成されたビュー オブジェクトをドキュメントにアタッチするときに、この関数を呼び出します。これは、[新規ファイル]、[ファイルを開く]、または [新しいウィンドウ] コマンドに応答するか、分割ウィンドウが分割されたときに発生します。
ビューを手動で作成してアタッチする場合にのみ、この関数を呼び出します。 通常は、ドキュメント クラス、ビュー クラス、フレーム ウィンドウ クラスを関連付ける CDocTemplate
オブジェクトを定義することで、フレームワークがドキュメントとビューを接続できるようにします。
例
// The following example toggles two views in an SDI (single document
// interface) frame window. A design decision must be made as to
// whether to leave the inactive view connected to the document,
// such that the inactive view continues to receive OnUpdate
// notifications from the document. It is usually desirable to
// keep the inactive view continuously in sync with the document, even
// though it is inactive. However, doing so incurs a performance cost,
// as well as the programming cost of implementing OnUpdate hints.
// It may be less expensive, in terms of performance and/or programming,
// to re-sync the inactive view with the document only with it is
// reactivated. This example illustrates this latter approach, by
// reconnecting the newly active view and disconnecting the newly
// inactive view, via calls to CDocument::AddView and RemoveView.
void CMainFrame::OnViewChange(UINT nCmdID)
// There is an ON_COMMAND_RANGE message map entry associated with
// OnViewChange:
// ON_COMMAND_RANGE(ID_VIEW_CHANGE1, ID_VIEW_CHANGE2, &OnViewChange)
{
CView *pViewAdd;
CView *pViewRemove;
CDocument *pDoc = GetActiveDocument();
// cvView1 and cvView2 are enum members defined in my CMainFrame class
if ((nCmdID == ID_VIEW_CHANGE1) && (m_currentView == cvView1))
return;
if ((nCmdID == ID_VIEW_CHANGE2) && (m_currentView == cvView2))
return;
if (nCmdID == ID_VIEW_CHANGE2)
{
if (m_pView2 == NULL)
{
m_pView1 = GetActiveView();
m_pView2 = new CMyView2;
//Note that if OnSize has been overridden in CMyView2
//and GetDocument() is used in this override it can
//cause assertions and, if the assertions are ignored,
//cause access violation.
m_pView2->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, rectDefault, this,
AFX_IDW_PANE_FIRST + 1, NULL);
}
pViewAdd = m_pView2;
pViewRemove = m_pView1;
m_currentView = cvView2;
}
else
{
pViewAdd = m_pView1;
pViewRemove = m_pView2;
m_currentView = cvView1;
}
// Set the child i.d. of the active view to AFX_IDW_PANE_FIRST,
// so that CFrameWnd::RecalcLayout will allocate to this
// "first pane" that portion of the frame window's client area
// not allocated to control bars. Set the child i.d. of the
// other view to anything other than AFX_IDW_PANE_FIRST; this
// examples switches the child id's of the two views.
int nSwitchChildID = pViewAdd->GetDlgCtrlID();
pViewAdd->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
pViewRemove->SetDlgCtrlID(nSwitchChildID);
// Show the newly active view and hide the inactive view.
pViewAdd->ShowWindow(SW_SHOW);
pViewRemove->ShowWindow(SW_HIDE);
// Connect the newly active view to the document, and
// disconnect the inactive view.
pDoc->AddView(pViewAdd);
pDoc->RemoveView(pViewRemove);
SetActiveView(pViewAdd);
RecalcLayout();
}
CDocument::BeginReadChunks
チャンク読み取りを初期化します。
virtual void BeginReadChunks ();
解説
CDocument::CanCloseFrame
ドキュメントを表示するフレーム ウィンドウが閉じられる前に、フレームワークによって呼び出されます。
virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
パラメーター
pFrame
ドキュメントにアタッチされているビューのフレーム ウィンドウをポイントします。
戻り値
フレーム ウィンドウを閉じるのが安全な場合は 0 以外。それ以外の場合は 0。
解説
既定の実装では、ドキュメントを表示する他のフレーム ウィンドウがあるかどうかを確認します。 指定したフレーム ウィンドウがドキュメントを表示する最後のウィンドウの場合、変更されている場合は、ドキュメントを保存するようにユーザーに求められます。 フレーム ウィンドウを閉じたときに特別な処理を実行する場合は、この関数をオーバーライドします。 これは、高度なオーバーライドが可能です。
CDocument::CDocument
CDocument
オブジェクトを構築します。
CDocument();
解説
フレームワークによって、ドキュメントの作成が自動的に処理されます。 OnNewDocument
メンバー関数をオーバーライドして、ドキュメントごとに初期化を実行します。これは、単一ドキュメント インターフェイス (SDI) アプリケーションで特に重要です。
CDocument::ClearChunkList
チャンク リストをクリアします。
virtual void ClearChunkList ();
解説
CDocument::ClearPathName
ドキュメント オブジェクトのパスをクリアします。
virtual void ClearPathName();
解説
CDocument
オブジェクトからパスをクリアすると、次にドキュメントを保存するときにアプリケーションがユーザーにメッセージを表示します。 これにより、 Save コマンドは Save As コマンドのように動作します。
CDocument::DeleteContents
CDocument
オブジェクト自体を破棄せずにドキュメントのデータを削除するためにフレームワークによって呼び出されます。
virtual void DeleteContents();
解説
ドキュメントが破棄される直前に呼び出されます。 また、再利用する前にドキュメントが空であることを確認するために呼び出されます。 これは、1 つのドキュメントのみを使用する SDI アプリケーションでは特に重要です。ユーザーが別のドキュメントを作成または開くたびに、ドキュメントが再利用されます。 この関数を呼び出して、ドキュメントのすべてのデータを削除する "すべてクリアの編集" または同様のコマンドを実装します。 この関数の既定の実装は、何も行いません。 ドキュメント内のデータを削除するには、この関数をオーバーライドします。
例
// This example is the handler for an Edit Clear All command.
void CExampleDoc::OnEditClearAll()
{
DeleteContents();
UpdateAllViews(NULL);
}
void CExampleDoc::DeleteContents()
{
// Re-initialize document data here.
}
CDocument::FindChunk
指定した GUID を持つチャンクを検索します。
virtual POSITION FindChunk(
REFCLSID guid,
DWORD pid);
パラメーター
guid
検索するチャンクの GUID を指定します。
pid
検索するチャンクの PID を指定します。
戻り値
成功した場合は、内部チャンク リスト内の位置。 それ以外の場合は NULL
。
解説
CDocument::GetAdapter
IDocument
インターフェイスを実装するオブジェクトへのポインターを返します。
virtual ATL::IDocument* GetAdapter();
戻り値
IDocument
インターフェイスを実装するオブジェクトへのポインター。
解説
CDocument::GetDocTemplate
この関数を呼び出して、このドキュメント型のドキュメント テンプレートへのポインターを取得します。
CDocTemplate* GetDocTemplate() const;
戻り値
このドキュメント型のドキュメント テンプレートへのポインター。ドキュメントがドキュメント テンプレートによって管理されていない場合は NULL。
例
// This example accesses the doc template object to construct
// a default document name such as SHEET.XLS, where "sheet"
// is the base document name and ".xls" is the file extension
// for the document type.
CString strDefaultDocName, strBaseName, strExt;
CDocTemplate *pDocTemplate = GetDocTemplate();
if (!pDocTemplate->GetDocString(strBaseName, CDocTemplate::docName) || !pDocTemplate->GetDocString(strExt, CDocTemplate::filterExt))
{
AfxThrowUserException(); // These doc template strings will
// be available if you created the application using AppWizard
// and specified the file extension as an option for
// the document class produced by AppWizard.
}
strDefaultDocName = strBaseName + strExt;
CDocument::GetFile
このメンバー関数を呼び出して、 CFile
オブジェクトへのポインターを取得します。
virtual CFile* GetFile(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CFileException* pError);
パラメーター
lpszFileName
目的のファイルへのパスである文字列。 パスは相対パスでも絶対パスでもかまいません。
pError
操作の完了状態を示す既存のファイル例外オブジェクトへのポインター。
nOpenFlags
共有モードとアクセス モード。 ファイルを開くときに実行するアクションを指定します。 ビットごとの OR (|
) 演算子を使用して、CFile コンストラクターCFile::CFile
にリストされているオプションを組み合わせることができます。 1 つのアクセス許可と 1 つの共有オプションが必要です。 modeCreate
モードと modeNoInherit
モードは省略可能です。
戻り値
CFile
オブジェクトを指すポインターです。
CDocument::GetFirstViewPosition
この関数を呼び出して、ドキュメントに関連付けられているビューのリスト内の最初のビューの位置を取得します。
virtual POSITION GetFirstViewPosition() const;
戻り値
GetNextView
メンバー関数との反復処理に使用できるPOSITION
値。
例
//To get the first view in the list of views:
//To get the first view in the list of views:
// POSITION pos = GetFirstViewPosition();
// CView* pFirstView = GetNextView(pos);
//
// This example uses CDocument::GetFirstViewPosition
// and GetNextView to repaint each view.
// An easier way to accomplish the same result is to call
// UpdateAllViews(NULL);
void CExampleDoc::OnRepaintAllViews()
{
POSITION pos = GetFirstViewPosition();
while (pos != NULL)
{
CView *pView = GetNextView(pos);
pView->UpdateWindow();
}
}
CDocument::GetNextView
この関数を呼び出して、ドキュメントのすべてのビューを反復処理します。
virtual CView* GetNextView(POSITION& rPosition) const;
パラメーター
rPosition
GetNextView
または GetFirstViewPosition
メンバー関数への前回の呼び出しによって返されたPOSITION
値への参照。 この値は NULL
することはできません。
戻り値
rPosition
によって識別されるビューへのポインター。
解説
この関数は、 rPosition
で識別されたビューを返し、 rPosition
リスト内の次のビューの POSITION
値に設定します。 取得したビューがリストの最後のビューである場合、 rPosition
は NULL
に設定されます。
例
//To get the first view in the list of views:
//To get the first view in the list of views:
// POSITION pos = GetFirstViewPosition();
// CView* pFirstView = GetNextView(pos);
//
// This example uses CDocument::GetFirstViewPosition
// and GetNextView to repaint each view.
// An easier way to accomplish the same result is to call
// UpdateAllViews(NULL);
void CExampleDoc::OnRepaintAllViews()
{
POSITION pos = GetFirstViewPosition();
while (pos != NULL)
{
CView *pView = GetNextView(pos);
pView->UpdateWindow();
}
}
CDocument::GetPathName
この関数を呼び出して、ドキュメントのディスク ファイルの完全修飾パスを取得します。
const CString& GetPathName() const;
戻り値
ドキュメントの完全修飾パス。 ドキュメントが保存されていないか、ディスク ファイルが関連付けられていない場合、この文字列は空です。
CDocument::GetThumbnail
サムネイル プロバイダーがサムネイルを表示するために使用するビットマップを作成します。
virtual BOOL GetThumbnail(
UINT cx,
HBITMAP* phbmp,
DWORD* pdwAlpha);
パラメーター
cx
ビットマップの幅と高さを指定します。
phbmp
関数が正常に返されるときに、ビットマップへのハンドルを格納します。
pdwAlpha
関数が正常に返されたときにアルファ チャネル値を指定する DWORD
が含まれます。
戻り値
サムネイルのビットマップが正常に作成された場合は TRUE
を返します。それ以外の場合は FALSE
。
解説
CDocument::GetTitle
この関数を呼び出して、ドキュメントのタイトルを取得します。これは通常、ドキュメントのファイル名から派生します。
const CString& GetTitle() const;
戻り値
ドキュメントのタイトル。
CDocument::InitializeSearchContent
検索ハンドラーの検索コンテンツを初期化するために呼び出されます。
virtual void InitializeSearchContent ();
解説
検索コンテンツを初期化するには、派生クラスでこのメソッドをオーバーライドします。 内容は、";" で区切られた部分を含む文字列である必要があります。 たとえば、"point;長方形;ole item"。
CDocument::IsModified
この関数を呼び出して、ドキュメントが最後に保存されてから変更されたかどうかを確認します。
virtual BOOL IsModified();
戻り値
ドキュメントが最後に保存されてから変更された場合は 0 以外。それ以外の場合は 0。
CDocument::IsSearchAndOrganizeHandler
CDocument
のこのインスタンスが検索および整理ハンドラー用に作成されたかどうかを示します。
BOOL IsSearchAndOrganizeHandler() const;
戻り値
CDocument
のこのインスタンスが検索および整理ハンドラー用に作成された場合にTRUE
を返します。
解説
現在、この関数は、アウトプロセス サーバーに実装されているリッチ プレビュー ハンドラーに対してのみ、 TRUE
を返します。 アプリケーション レベルで適切なフラグ (m_bPreviewHandlerMode
、 m_bSearchMode
、 m_bGetThumbnailMode
) を設定して、この関数を TRUE
返すことができます。
CDocument::LoadDocumentFromStream
ストリームからドキュメント データを読み込む場合に呼び出されます。
virtual HRESULT LoadDocumentFromStream(
IStream* pStream,
DWORD dwGrfMode);
パラメーター
pStream
ストリームへのポインター。 このストリームはシェルによって提供されます。
dwGrfMode
ストリームへのアクセス モード。
戻り値
S_OK
読み込み操作が成功した場合はエラー コードで HRESULT
。
解説
派生クラスでこのメソッドをオーバーライドして、ストリームからデータを読み込む方法をカスタマイズできます。
CDocument::m_bGetThumbnailMode
CDocument
オブジェクトが dllhost によってサムネイル用に作成されたことを指定します。 CView::OnDraw
でチェックインする必要があります。
BOOL m_bGetThumbnailMode;
解説
TRUE
は、ドキュメントがサムネイル用に dllhost によって作成されたことを示します。
CDocument::m_bPreviewHandlerMode
CDocument
オブジェクトがリッチ プレビューの prevhost によって作成されたことを指定します。 CView::OnDraw
でチェックインする必要があります。
BOOL m_bPreviewHandlerMode;
解説
TRUE
は、ドキュメントがリッチ プレビューの prevhost によって作成されたことを示します。
CDocument::m_bSearchMode
CDocument
オブジェクトがインデクサーまたは別の検索アプリケーションによって作成されたことを指定します。
BOOL m_bSearchMode;
解説
TRUE
は、ドキュメントがインデクサーまたは別の検索アプリケーションによって作成されたことを示します。
CDocument::m_clrRichPreviewBackColor
リッチ プレビュー ウィンドウの背景色を指定します。 この色はホストによって設定されます。
COLORREF m_clrRichPreviewBackColor;
解説
CDocument::m_clrRichPreviewTextColor
リッチ プレビュー ウィンドウの前景色を指定します。 この色はホストによって設定されます。
COLORREF m_clrRichPreviewTextColor;
解説
CDocument::m_lfRichPreviewFont
リッチ プレビュー ウィンドウのテキスト フォントを指定します。 このフォント情報はホストによって設定されます。
CFont m_lfRichPreviewFont;
解説
CDocument::OnBeforeRichPreviewFontChanged
リッチ プレビュー フォントが変更される前に呼び出されます。
virtual void OnBeforeRichPreviewFontChanged();
解説
CDocument::OnChangedViewList
ビューがドキュメントに追加またはドキュメントから削除された後、フレームワークによって呼び出されます。
virtual void OnChangedViewList();
解説
この関数の既定の実装では、最後のビューが削除されているかどうかを確認し、削除する場合はドキュメントを削除します。 フレームワークがビューを追加または削除するときに特別な処理を実行する場合は、この関数をオーバーライドします。 たとえば、ビューがアタッチされていない場合でもドキュメントを開いたままにする場合は、この関数をオーバーライドします。
CDocument::OnCloseDocument
ドキュメントが閉じられたときにフレームワークによって呼び出されます。通常は、[ファイルを閉じる] コマンドの一部として呼び出されます。
virtual void OnCloseDocument();
解説
この関数の既定の実装では、ドキュメントの表示に使用されるすべてのフレームが破棄され、ビューが閉じられ、ドキュメントの内容がクリーンアップされた後、 DeleteContents
メンバー関数が呼び出されてドキュメントのデータが削除されます。
フレームワークがドキュメントを閉じるときに特別なクリーンアップ処理を実行する場合は、この関数をオーバーライドします。 たとえば、ドキュメントがデータベース内のレコードを表している場合は、この関数をオーバーライドしてデータベースを閉じることがあります。 オーバーライドからこの関数の基底クラス バージョンを呼び出す必要があります。
CDocument::OnCreatePreviewFrame
リッチ プレビュー用のプレビュー フレームを作成する必要がある場合に、フレームワークによって呼び出されます。
virtual BOOL OnCreatePreviewFrame();
戻り値
フレームが正常に作成された場合は TRUE
を返します。それ以外の場合は FALSE
。
解説
CDocument::OnDocumentEvent
ドキュメント イベントに応答してフレームワークによって呼び出されます。
virtual void OnDocumentEvent(DocumentEvent deEvent);
パラメーター
deEvent
[in]イベントの種類を記述する列挙データ型。
解説
ドキュメント イベントは、複数のクラスに影響する可能性があります。 このメソッドは、 CDocument
クラス以外のクラスに影響するドキュメント イベントを処理します。 現在、ドキュメント イベントに応答する必要がある唯一のクラスは、 CDataRecoveryHandler
クラスです。 CDocument
クラスには、CDocument
への影響を処理する他のオーバーライド可能なメソッドがあります。
次の表に、 deEvent
に使用できる値と、対応するイベントを示します。
Value | 対応するイベント |
---|---|
onAfterNewDocument |
新しいドキュメントが作成されました。 |
onAfterOpenDocument |
新しいドキュメントが開かれました。 |
onAfterSaveDocument |
ドキュメントが保存されました。 |
onAfterCloseDocument |
ドキュメントが閉じられました。 |
CDocument::OnDrawThumbnail
サムネイルを描画するには、派生クラスでこのメソッドをオーバーライドします。
virtual void OnDrawThumbnail(
CDC& dc,
LPRECT lprcBounds);
パラメーター
dc
デバイス コンテキストへの参照。
lprcBounds
サムネイルを描画する領域の外接する四角形を指定します。
解説
CDocument::OnFileSendMail
ドキュメントを添付ファイルとして含む常駐メール ホスト (存在する場合) を介してメッセージを送信します。
void OnFileSendMail();
解説
OnFileSendMail
は、無題のドキュメントと変更されたドキュメントを一時ファイルにシリアル化 (保存) するために OnSaveDocument
を呼び出し、電子メールで送信されます。 ドキュメントが変更されていない場合は、一時ファイルは必要ありません。元のファイルが送信されます。 OnFileSendMail
まだ読み込まれていない場合は、MAPI32.DLLが読み込まれます。
COleDocument
のOnFileSendMail
の特別な実装は、複合ファイルを正しく処理します。
CDocument
は、メール サポート (MAPI) が存在する場合に、メール経由でドキュメントを送信することをサポートします。 MFC MAPI トピック および MAPI サポートに関する記事を参照。
CDocument::OnLoadDocumentFromStream
ストリームからドキュメント データを読み込む必要がある場合に、フレームワークによって呼び出されます。
virtual HRESULT OnLoadDocumentFromStream(
IStream* pStream,
DWORD grfMode);
パラメーター
pStream
受信ストリームへのポインター。
grfMode
ストリームへのアクセス モード。
戻り値
S_OK
読み込みが成功した場合。それ以外の場合はエラー コード。
解説
CDocument::OnNewDocument
File New コマンドの一部としてフレームワークによって呼び出されます。
virtual BOOL OnNewDocument();
戻り値
ドキュメントが正常に初期化された場合は 0 以外。それ以外の場合は 0。
解説
この関数の既定の実装では、 DeleteContents
メンバー関数を呼び出して、ドキュメントが空であることを確認し、新しいドキュメントをクリーンとしてマークします。 この関数をオーバーライドして、新しいドキュメントのデータ構造を初期化します。 オーバーライドからこの関数の基底クラス バージョンを呼び出す必要があります。
ユーザーが SDI アプリケーションで [新しいファイル] コマンドを選択した場合、フレームワークはこの関数を使用して、新しいドキュメントを作成するのではなく、既存のドキュメントを再初期化します。 ユーザーが複数のドキュメント インターフェイス (MDI) アプリケーションで [新規ファイル] を選択した場合、フレームワークは毎回新しいドキュメントを作成し、この関数を呼び出して初期化します。 SDI アプリケーションで File New コマンドを有効にするには、コンストラクターではなく、この関数に初期化コードを配置する必要があります。
OnNewDocument
が 2 回呼び出される場合があることに注意してください。 これは、ドキュメントが ActiveX ドキュメント サーバーとして埋め込まれている場合に発生します。 この関数は、最初に CreateInstance
メソッド ( COleObjectFactory
派生クラスによって公開) によって呼び出され、2 回目は InitNew
メソッド ( COleServerDoc
派生クラスによって公開されます) によって呼び出されます。
例
次の例は、ドキュメント オブジェクトを初期化する別の方法を示しています。
// Method 1: In an MDI application, the simplest place to do
// initialization is in the document constructor. The framework
// always creates a new document object for File New or File Open.
CExampleDoc::CExampleDoc()
{
// Do initialization of MDI document here.
}
// Method 2: In an SDI or MDI application, do all initialization
// in an override of OnNewDocument, if you are certain that
// the initialization is effectively saved upon File Save
// and fully restored upon File Open, via serialization.
BOOL CMyDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
{
return FALSE;
}
// Do initialization of new document here.
return TRUE;
}
// Method 3: If the initialization of your document is not
// effectively saved and restored by serialization (during File Save
// and File Open), then implement the initialization in single
// function (named InitMyDocument in this example). Call the
// shared initialization function from overrides of both
// OnNewDocument and OnOpenDocument.
BOOL CExampleDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
{
return FALSE;
}
InitMyDocument(); // call your shared initialization function
// If your new document object requires additional initialization
// not necessary when the document is deserialized via File Open,
// then perform that additional initialization here.
return TRUE;
}
CDocument::OnOpenDocument
ファイルを開くコマンドの一部としてフレームワークによって呼び出されます。
virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
パラメーター
lpszPathName
開くドキュメントのパスをポイントします。
戻り値
ドキュメントが正常に読み込まれた場合は 0 以外。それ以外の場合は 0。
解説
この関数の既定の実装では、指定したファイルを開き、 DeleteContents
メンバー関数を呼び出してドキュメントが空であることを確認し、 CObject::Serialize
を呼び出してファイルの内容を読み取り、ドキュメントをクリーンとしてマークします。 アーカイブ メカニズムまたはファイル メカニズム以外のものを使用する場合は、この関数をオーバーライドします。 たとえば、ドキュメントが個別のファイルではなくデータベース内のレコードを表すアプリケーションを記述できます。
ユーザーが SDI アプリケーションで [ファイルを開く] コマンドを選択した場合、フレームワークはこの関数を使用して、新しいオブジェクトを作成するのではなく、既存の CDocument
オブジェクトを再初期化します。 ユーザーが MDI アプリケーションで [ファイルを開く] を選択した場合、フレームワークは毎回新しい CDocument
オブジェクトを構築し、この関数を呼び出して初期化します。 SDI アプリケーションで File Open コマンドを有効にするには、コンストラクターではなく、この関数に初期化コードを配置する必要があります。
例
次の例は、ドキュメント オブジェクトを初期化する別の方法を示しています。
// Method 1: In an MDI application, the simplest place to do
// initialization is in the document constructor. The framework
// always creates a new document object for File New or File Open.
CExampleDoc::CExampleDoc()
{
// Do initialization of MDI document here.
}
// Method 2: In an SDI or MDI application, do all initialization
// in an override of OnNewDocument, if you are certain that
// the initialization is effectively saved upon File Save
// and fully restored upon File Open, via serialization.
BOOL CMyDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
{
return FALSE;
}
// Do initialization of new document here.
return TRUE;
}
// Method 3: If the initialization of your document is not
// effectively saved and restored by serialization (during File Save
// and File Open), then implement the initialization in single
// function (named InitMyDocument in this example). Call the
// shared initialization function from overrides of both
// OnNewDocument and OnOpenDocument.
BOOL CExampleDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
{
return FALSE;
}
InitMyDocument(); // call your shared initialization function
// If your new document object requires additional initialization
// not necessary when the document is deserialized via File Open,
// then perform that additional initialization here.
return TRUE;
}
// Additional example of OnOpenDocument()
BOOL CExampleDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
{
return FALSE;
}
InitMyDocument(); // call your shared initialization function
return TRUE;
}
CDocument::OnPreviewHandlerQueryFocus
GetFocus
関数の呼び出しから取得したHWND
を返すように、プレビュー ハンドラーに指示します。
virtual HRESULT OnPreviewHandlerQueryFocus(HWND* phwnd);
パラメーター
phwnd
[out]このメソッドが戻るときに、プレビュー ハンドラーのフォアグラウンド スレッドから GetFocus
関数を呼び出して返された HWND へのポインターを格納します。
戻り値
成功した場合は S_OK
を返し、それ以外の場合はエラー値を返します。
解説
CDocument::OnPreviewHandlerTranslateAccelerator
プレビュー ハンドラーが実行されているプロセスのメッセージ ポンプから渡されたキーストロークを処理するようにプレビュー ハンドラーに指示します。
virtual HRESULT OnPreviewHandlerTranslateAccelerator(MSG* pmsg);
パラメーター
pmsg
[in]ウィンドウ メッセージへのポインター。
戻り値
プレビュー ハンドラーによってキーストローク メッセージを処理できる場合、ハンドラーはそれを処理し、 S_OK
を返します。 プレビュー ハンドラーがキーストローク メッセージを処理できない場合は、 IPreviewHandlerFrame::TranslateAccelerator
経由でホストに提供されます。 ホストがメッセージを処理する場合、このメソッドは S_OK
を返します。 ホストがメッセージを処理しない場合、このメソッドは S_FALSE
を返します。
解説
CDocument::OnRichPreviewBackColorChanged
リッチ プレビューの背景色が変更されたときに呼び出されます。
virtual void OnRichPreviewBackColorChanged();
解説
CDocument::OnRichPreviewFontChanged
リッチ プレビュー フォントが変更されたときに呼び出されます。
virtual void OnRichPreviewFontChanged();
解説
CDocument::OnRichPreviewSiteChanged
リッチ プレビュー サイトが変更されたときに呼び出されます。
virtual void OnRichPreviewSiteChanged();
解説
CDocument::OnRichPreviewTextColorChanged
リッチ プレビューテキストの色が変更されたときに呼び出されます。
virtual void OnRichPreviewTextColorChanged();
解説
CDocument::OnSaveDocument
[ファイルの保存] または [名前を付けて保存] コマンドの一部としてフレームワークによって呼び出されます。
virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
パラメーター
lpszPathName
ファイルを保存する完全修飾パスをポイントします。
戻り値
ドキュメントが正常に保存された場合は 0 以外。それ以外の場合は 0。
解説
この関数の既定の実装では、指定したファイルを開き、 CObject::Serialize
を呼び出してドキュメントのデータをファイルに書き込み、ドキュメントをクリーンとしてマークします。 フレームワークがドキュメントを保存するときに特別な処理を実行する場合は、この関数をオーバーライドします。 たとえば、ドキュメントが個別のファイルではなくデータベース内のレコードを表すアプリケーションを記述できます。
CDocument::OnUnloadHandler
プレビュー ハンドラーがアンロードされるときにフレームワークによって呼び出されます。
virtual void OnUnloadHandler();
解説
CDocument::OnUpdateFileSendMail
メール サポート (MAPI) が存在する場合は、 ID_FILE_SEND_MAIL
コマンドを有効にします。
void OnUpdateFileSendMail(CCmdUI* pCmdUI);
パラメーター
pCmdUI
ID_FILE_SEND_MAIL
コマンドに関連付けられているCCmdUI
オブジェクトへのポインター。
解説
それ以外の場合、関数はメニュー項目の上または下の区切り記号を含め、メニューから ID_FILE_SEND_MAIL
コマンドを削除します。 MAPI は、 MAPI32.DLL
がパスに存在し、 WIN.INI
ファイルの [メール] セクションで MAPI=1 である場合に有効になります。 ほとんどのアプリケーションは、[ファイル] メニューにこのコマンドを配置します。
CDocument
は、メール サポート (MAPI) が存在する場合に、メール経由でドキュメントを送信することをサポートします。 MFC MAPI トピック および MAPI サポートに関する記事を参照。
CDocument::PreCloseFrame
このメンバー関数は、フレーム ウィンドウが破棄される前にフレームワークによって呼び出されます。
virtual void PreCloseFrame(CFrameWnd* pFrame);
パラメーター
pFrame
関連付けられているCDocument
オブジェクトを保持するCFrameWnd
へのポインター。
解説
カスタム クリーンアップを提供するためにオーバーライドできますが、基底クラスも必ず呼び出してください。
PreCloseFrame
の既定値は、CDocument
では何も行いません。 CDocument
派生クラスは、このメンバー関数COleDocument
使用CRichEditDoc
。
CDocument::ReadNextChunkValue
次のチャンク値を読み取ります。
virtual BOOL ReadNextChunkValue(IFilterChunkValue** ppValue);
パラメーター
ppValue
[out]関数から制御が戻るときに、 ppValue
には読み取られた値が格納されます。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
CDocument::ReleaseFile
このメンバー関数は、ファイルを解放するためにフレームワークによって呼び出され、他のアプリケーションで使用できるようにします。
virtual void ReleaseFile(
CFile* pFile,
BOOL bAbort);
パラメーター
pFile
解放する CFile
オブジェクトへのポインター。
bAbort
CFile::Close
またはCFile::Abort
を使用してファイルを解放するかどうかを指定します。 FALSE
CFile::Close
を使用してファイルを解放する場合はTRUE
。CFile::Abort
を使用してファイルを解放する場合は。
解説
bAbort
がTRUE
されている場合、ReleaseFile
はCFile::Abort
を呼び出し、ファイルは解放されます。 CFile::Abort
は例外をスローしません。
bAbort
がFALSE
されている場合、ReleaseFile
はCFile::Close
を呼び出し、ファイルは解放されます。
ファイルが解放される前にユーザーによるアクションを要求するには、このメンバー関数をオーバーライドします。
CDocument::RemoveChunk
指定した GUID
を持つチャンクを削除します。
virtual void RemoveChunk(
REFCLSID guid,
DWORD pid);
パラメーター
Guid
削除するチャンクの GUID
を指定します。
Pid
削除するチャンクの PID
を指定します。
解説
CDocument::RemoveView
ドキュメントからビューをデタッチするには、この関数を呼び出します。
void RemoveView(CView* pView);
パラメーター
pView
削除されるビューをポイントします。
解説
この関数は、ドキュメントに関連付けられているビューの一覧から指定したビューを削除します。また、ビューのドキュメント ポインターを NULL
に設定します。 この関数は、フレーム ウィンドウが閉じているか、分割ウィンドウのウィンドウが閉じられたときにフレームワークによって呼び出されます。
ビューを手動でデタッチする場合にのみ、この関数を呼び出します。 通常は、ドキュメント クラス、ビュー クラス、フレーム ウィンドウ クラスを関連付ける CDocTemplate
オブジェクトを定義することで、ドキュメントとビューをデタッチできます。
サンプル実装については、 AddView
の例を参照してください。
CDocument::ReportSaveLoadException
ドキュメントの保存または読み込み中に例外 (通常は CFileException
または CArchiveException
) がスローされた場合に呼び出されます。
virtual void ReportSaveLoadException(
LPCTSTR lpszPathName,
CException* e,
BOOL bSaving,
UINT nIDPDefault);
パラメーター
lpszPathName
保存または読み込まれているドキュメントの名前をポイントします。
e
スローされた例外を指します。 NULL
でもかまいません。
bSaving
実行中の操作を示すフラグ。ドキュメントが保存されている場合は 0 以外、ドキュメントが読み込まれている場合は 0。
nIDPDefault
関数がより具体的なものを指定していない場合に表示されるエラー メッセージの識別子。
解説
既定の実装では、例外オブジェクトが調べられ、原因を具体的に説明するエラー メッセージが検索されます。 特定のメッセージが見つからない場合、または e
が NULL
場合は、 nIDPDefault
パラメーターで指定された一般的なメッセージが使用されます。 その後、この関数はエラー メッセージを含むメッセージ ボックスを表示します。 追加のカスタマイズされたエラー メッセージを提供する場合は、この関数をオーバーライドします。 これは、高度なオーバーライドが可能です。
CDocument::SaveModified
変更されたドキュメントを閉じる前に、フレームワークによって呼び出されます。
virtual BOOL SaveModified();
戻り値
文書を続行して閉じるのが安全な場合は 0 以外。文書を閉じてはならない場合は 0。
解説
この関数の既定の実装では、変更が行われた場合にドキュメントに変更を保存するかどうかをユーザーに確認するメッセージ ボックスが表示されます。 プログラムで別のプロンプト・プロシージャーが必要な場合は、この関数をオーバーライドします。 これは、高度なオーバーライドが可能です。
CDocument::SetChunkValue
チャンク値を設定します。
virtual BOOL SetChunkValue (IFilterChunkValue* pValue);
パラメーター
pValue
設定するチャンク値を指定します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
CDocument::SetModifiedFlag
ドキュメントに変更を加えた後、この関数を呼び出します。
virtual void SetModifiedFlag(BOOL bModified = TRUE);
パラメーター
bModified
ドキュメントが変更されたかどうかを示すフラグ。
解説
この関数を一貫して呼び出すことで、ドキュメントを閉じる前に、フレームワークがユーザーに変更の保存を求めるメッセージを表示します。 通常、bModified
パラメーターには既定値の TRUE
を使用する必要があります。 ドキュメントをクリーン (変更なし) としてマークするには、 FALSE
の値を指定してこの関数を呼び出します。
CDocument::SetPathName
この関数を呼び出して、ドキュメントのディスク ファイルの完全修飾パスを指定します。
virtual void SetPathName(
LPCTSTR lpszPathName,
BOOL bAddToMRU = TRUE);
パラメーター
lpszPathName
ドキュメントのパスとして使用する文字列を指します。
bAddToMRU
ファイル名を最近使用した (MRU) ファイルの一覧に追加するかどうかを決定します。 TRUE
場合、ファイル名が追加されます。FALSE
場合は追加されません。
解説
パス bAddToMRU
値に応じて、アプリケーションによって管理される MRU リストに追加されるか、追加されません。 一部のドキュメントはディスク ファイルに関連付けられていないことに注意してください。 フレームワークで使用されるファイルを開いて保存するための既定の実装をオーバーライドする場合にのみ、この関数を呼び出します。
CDocument::SetTitle
この関数を呼び出して、ドキュメントのタイトル (フレーム ウィンドウのタイトル バーに表示される文字列) を指定します。
virtual void SetTitle(LPCTSTR lpszTitle);
パラメーター
lpszTitle
ドキュメントのタイトルとして使用する文字列を指します。
解説
この関数を呼び出すと、ドキュメントを表示するすべてのフレーム ウィンドウのタイトルが更新されます。
CDocument::UpdateAllViews
ドキュメントが変更された後、この関数を呼び出します。
void UpdateAllViews(
CView* pSender,
LPARAM lHint = 0L,
CObject* pHint = NULL);
パラメーター
pSender
ドキュメントを変更したビューをポイントするか、すべてのビューを更新する場合は NULL
します。
lHint
変更に関する情報を格納します。
pHint
変更に関する情報を格納しているオブジェクトを指します。
解説
この関数は、 SetModifiedFlag
メンバー関数を呼び出した後で呼び出す必要があります。 この関数は、 pSender
で指定されたビューを除き、ドキュメントに添付された各ビューにドキュメントが変更されたことを通知します。 通常、ユーザーがビューを使用してドキュメントを変更した後、ビュー クラスからこの関数を呼び出します。
この関数は、送信ビューを除くドキュメントの各ビューに対して CView::OnUpdate
メンバー関数を呼び出し、 pHint
と lHint
を渡します。 これらのパラメーターを使用して、ドキュメントに加えられた変更に関する情報をビューに渡します。 lHint
を使用して情報をエンコードしたり、CObject
派生クラスを定義して変更に関する情報を格納したり、pHint
を使用してそのクラスのオブジェクトを渡したりできます。 渡された情報に基づいてビューの表示の更新を最適化するには、CView
派生クラスのCView::OnUpdate
メンバー関数をオーバーライドします。
例
void CExampleDoc::OnUpdateAllViews()
{
UpdateAllViews(NULL);
}
関連項目
MFC サンプル MDIDOCVW
MFC サンプル SNAPVW
MFC サンプル NPP
CCmdTarget
クラス
階層図
CCmdTarget
クラス
CView
クラス
CDocTemplate
クラス