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の詳細については、「SerializationDocument/View Architecture Topics、および Document/View Creation を参照してください。

継承階層

CObject

CCmdTarget

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 値に設定します。 取得したビューがリストの最後のビューである場合、 rPositionNULL に設定されます。

//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_bPreviewHandlerModem_bSearchModem_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が読み込まれます。

COleDocumentOnFileSendMailの特別な実装は、複合ファイルを正しく処理します。

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を使用してファイルを解放するかどうかを指定します。 FALSECFile::Closeを使用してファイルを解放する場合はTRUECFile::Abortを使用してファイルを解放する場合は。

解説

bAbortTRUEされている場合、ReleaseFileCFile::Abortを呼び出し、ファイルは解放されます。 CFile::Abort は例外をスローしません。

bAbortFALSEされている場合、ReleaseFileCFile::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
関数がより具体的なものを指定していない場合に表示されるエラー メッセージの識別子。

解説

既定の実装では、例外オブジェクトが調べられ、原因を具体的に説明するエラー メッセージが検索されます。 特定のメッセージが見つからない場合、または eNULL場合は、 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 メンバー関数を呼び出し、 pHintlHintを渡します。 これらのパラメーターを使用して、ドキュメントに加えられた変更に関する情報をビューに渡します。 lHintを使用して情報をエンコードしたり、CObject派生クラスを定義して変更に関する情報を格納したり、pHintを使用してそのクラスのオブジェクトを渡したりできます。 渡された情報に基づいてビューの表示の更新を最適化するには、CView 派生クラスのCView::OnUpdateメンバー関数をオーバーライドします。

void CExampleDoc::OnUpdateAllViews()
{
   UpdateAllViews(NULL);
}

関連項目

MFC サンプル MDIDOCVW
MFC サンプル SNAPVW
MFC サンプル NPP
CCmdTarget クラス
階層図
CCmdTarget クラス
CView クラス
CDocTemplate クラス