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、「シリアル化」、「ドキュメント/ビューアーキテクチャ」トピック、および「ドキュメント/ビューの作成」を参照してください

継承階層

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 クリアすると、次にドキュメントを保存するときにアプリケーションがユーザーにメッセージを表示します。 これにより、[ 保存] コマンドは [名前を付けて 保存] コマンドのように動作します。

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 つの共有オプションが必要です。とmodeCreatemodeNoInheritモードは省略可能です。

戻り値

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::CloseCFile::Abortするかどうかを指定します。 FALSEを使用してファイルを解放する場合は 〗TRUE。ファイルをリリースする場合は 〘 を使用CFile::CloseしますCFile::Abort

解説

if bAbort is TRUE, ReleaseFile calls CFile::Abort, and the file is released. CFile::Abort は例外をスローしません。

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

解説

既定の実装では、例外オブジェクトが調べられ、原因を具体的に説明するエラー メッセージが検索されます。 特定のメッセージが見つからない場合、または見つかった場合 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
ドキュメントが変更されたかどうかを示すフラグ。

解説

この関数を一貫して呼び出すことで、ドキュメントを閉じる前に、フレームワークがユーザーに変更の保存を求めるメッセージを表示します。 通常は、パラメーターの既定値 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除き、ドキュメントの各ビューのメンバー関数を呼び出します。pHintlHint これらのパラメーターを使用して、ドキュメントに加えられた変更に関する情報をビューに渡します。 情報lHintをエンコードするには、変更に関する情報を格納し、そのクラスのpHintオブジェクトを渡す -derived クラスを定義CObjectすることもできます。 CView::OnUpdate渡された情報にCView基づいてビューの表示の更新を最適化するには、-derived クラスのメンバー関数をオーバーライドします。

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

関連項目

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