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 |
関数の呼び出し元を返すように HWND プレビュー ハンドラーに GetFocus 指示します。 |
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 |
サムネイル用に CDocument dllhost によってオブジェクトが作成されたことを指定します。 でチェックするCView::OnDraw 必要があります。 |
CDocument::m_bPreviewHandlerMode |
CDocument prevhost で作成されたオブジェクトを指定しますRich Preview 。 でチェックする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 サポートに関する記事を参照してください。
詳細についてはCDocument
、「シリアル化」、「ドキュメント/ビューアーキテクチャ」トピック、および「ドキュメント/ビューの作成」を参照してください。
継承階層
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
クリアすると、次にドキュメントを保存するときにアプリケーションがユーザーにメッセージを表示します。 これにより、[ 保存] コマンドは [名前を付けて 保存] コマンドのように動作します。
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;
戻り値
POSITION
メンバー関数の反復処理GetNextView
に使用できる値。
例
//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
以前の POSITION
呼び出しによって返された値への GetNextView
参照、または GetFirstViewPosition
メンバー関数。 この値を NULL
指定することはできません。
戻り値
で rPosition
識別されるビューへのポインター。
解説
この関数は、識別されたrPosition
ビューを返し、リスト内のPOSITION
次のビューの値に設定rPosition
します。 取得したビューがリストの最後のビューである場合は、 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
が Search & Organize ハンドラー用に作成されたかどうかを示します。
BOOL IsSearchAndOrganizeHandler() const;
戻り値
TRUE
このインスタンスCDocument
が検索および整理ハンドラー用に作成されたかどうかを返します。
解説
現在、この関数は、 TRUE
アウトプロセス サーバーに実装されているリッチ プレビュー ハンドラーに対してのみ返されます。 アプリケーション レベルで適切なフラグ (m_bPreviewHandlerMode
, , m_bGetThumbnailMode
) を設定して、m_bSearchMode
この関数を返すことができます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
されてドキュメントのデータが削除されます。
フレームワークがドキュメントを閉じるときに特別なクリーンup 処理を実行する場合は、この関数をオーバーライドします。 たとえば、ドキュメントがデータベース内のレコードを表している場合は、この関数をオーバーライドしてデータベースを閉じることがあります。 オーバーライドからこの関数の基底クラス バージョンを呼び出す必要があります。
CDocument::OnCreatePreviewFrame
リッチ プレビュー用のプレビュー フレームを作成する必要がある場合に、フレームワークによって呼び出されます。
virtual BOOL OnCreatePreviewFrame();
戻り値
フレームが TRUE
正常に作成された場合は返します。それ以外の場合 FALSE
は返します。
解説
CDocument::OnDocumentEvent
ドキュメント イベントに応答してフレームワークによって呼び出されます。
virtual void OnDocumentEvent(DocumentEvent deEvent);
パラメーター
deEvent
[in]イベントの種類を記述する列挙データ型。
解説
ドキュメント イベントは、複数のクラスに影響する可能性があります。 このメソッドは、クラス以外のクラスに影響を与えるドキュメント イベントを処理します。CDocument
現在、ドキュメント イベントに応答する必要がある唯一のクラスは Class 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 を読み込みます。
複合ファイルを OnFileSendMail
正しく処理するための COleDocument
特別な実装。
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 コマンドを有効にするには、コンストラクターではなく、この関数に初期化コードを配置する必要があります。
2 回呼び出される場合 OnNewDocument
があることに注意してください。 これは、ドキュメントが ActiveX ドキュメント サーバーとして埋め込まれている場合に発生します。 この関数は、最初に CreateInstance
メソッド (-derived クラスによって公開) によって COleObjectFactory
呼び出され、2 回目は InitNew
メソッドによって呼び出されます (-derived クラスによって 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
関数の呼び出しから取得した値を HWND
返すようにプレビュー ハンドラーに GetFocus
指示します。
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
ID_FILE_SEND_MAIL
メール サポート (MAPI) が存在する場合にコマンドを有効にします。
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
保持するオブジェクトへのポインター。
解説
カスタム クリーンup を提供するためにオーバーライドできますが、基底クラスも必ず呼び出してください。
既定値 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
を使用してファイルを解放する場合は 〗TRUE
。ファイルをリリースする場合は 〘 を使用CFile::Close
しますCFile::Abort
。
解説
if bAbort
is TRUE
, ReleaseFile
calls CFile::Abort
, and the file is released. CFile::Abort
は例外をスローしません。
の場合bAbort
は ReleaseFile
FALSE
、呼び出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
ドキュメントの保存または読み込み中に例外 (通常は a 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
ドキュメントが変更されたかどうかを示すフラグ。
解説
この関数を一貫して呼び出すことで、ドキュメントを閉じる前に、フレームワークがユーザーに変更の保存を求めるメッセージを表示します。 通常は、パラメーターの既定値 TRUE
を使用する bModified
必要があります。 ドキュメントをクリーン (変更されていない) としてマークするには、値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
をエンコードするには、変更に関する情報を格納し、そのクラスのpHint
オブジェクトを渡す -derived クラスを定義CObject
することもできます。 CView::OnUpdate
渡された情報にCView
基づいてビューの表示の更新を最適化するには、-derived クラスのメンバー関数をオーバーライドします。
例
void CExampleDoc::OnUpdateAllViews()
{
UpdateAllViews(NULL);
}
関連項目
MFC サンプル MDIDOCVW
MFC サンプル SNAPVW
MFC サンプル NPP
CCmdTarget
クラス
階層図
CCmdTarget
クラス
CView
クラス
CDocTemplate
クラス
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示