共用方式為


COleDocument 類別

支援視覺化編輯之 OLE 文件的基底類別。

語法

class COleDocument : public CDocument

成員

公用建構函式

名稱 描述
COleDocument::COleDocument 建構 COleDocument 物件。

公用方法

名稱 描述
COleDocument::AddItem 將專案加入檔案所維護的項目清單。
COleDocument::ApplyPrintDevice 設定檔中所有客戶端專案的列印目標裝置。
COleDocument::EnableCompoundFile 使用 OLE 結構化記憶體檔案格式來儲存檔。
COleDocument::GetInPlaceActiveItem 傳回目前就地作用中的 OLE 專案。
COleDocument::GetNextClientItem 取得下一個用於逐一查看的客戶端專案。
COleDocument::GetNextItem 取得下一個文件項目進行逐一查看。
COleDocument::GetNextServerItem 取得下一個用於逐一查看的伺服器專案。
COleDocument::GetPrimarySelectedItem 傳回檔中的主要選取 OLE 專案。
COleDocument::GetStartPosition 取得開始反覆專案的初始位置。
COleDocument::HasBlankItems 檢查檔中是否有空白專案。
COleDocument::OnShowViews 當文件變成可見或看不見時呼叫。
COleDocument::RemoveItem 從檔案所維護的專案清單中移除專案。
COleDocument::UpdateModifiedFlag 如果已修改任何包含的 OLE 專案,將文件標示為已修改。

受保護的方法

名稱 描述
COleDocument::OnEditChangeIcon 處理 [變更圖示] 功能表命令中的事件。
COleDocument::OnEditConvert 處理將內嵌或連結的物件從某個類型轉換成另一種類型。
COleDocument::OnEditLinks 處理 [編輯] 功能表上 [連結] 命令中的事件。
COleDocument::OnFileSendMail 傳送附加檔的郵件訊息。
COleDocument::OnUpdateEditChangeIcon 由架構呼叫,以更新 [編輯/變更圖示] 功能表選項的命令 UI。
COleDocument::OnUpdateEditLinksMenu 由架構呼叫,以更新 [編輯/連結] 功能表選項的命令 UI。
COleDocument::OnUpdateObjectVerbMenu 由架構呼叫,以更新Edit/ ObjectName 功能表選項的命令UI,以及從Edit/ ObjectName 存取的 Verb 子選單。
COleDocument::OnUpdatePasteLinkMenu 由架構呼叫,以更新 [貼上特殊] 功能表選項的命令 UI。
COleDocument::OnUpdatePasteMenu 由架構呼叫,以更新 [貼上] 功能表選項的命令 UI。

備註

COleDocument 衍生自 CDocument,可讓您的 OLE 應用程式使用 Microsoft Foundation Class Library 所提供的檔/檢視架構。

COleDocument會將文件視為 CDocItem 物件的集合,以處理 OLE 專案。 容器和伺服器應用程式都需要這類架構,因為其檔必須能夠包含 OLE 專案。 衍生自 CDocItemCOleServerItemCOleClientItem 類別會管理應用程式和 OLE 專案之間的互動。

如果您要撰寫簡單的容器應用程式,請從 COleDocument衍生您的檔案類別。 如果您要撰寫的容器應用程式支援連結至其檔所包含的內嵌專案,請從 COleLinkingDoc 衍生您的檔案類別。 如果您要撰寫伺服器應用程式或組合容器/伺服器,請從 COleServerDoc 衍生您的檔案類別。 COleLinkingDocCOleServerDoc 衍生自 COleDocument,因此這些類別會繼承 和 CDocumentCOleDocument所有可用的服務。

若要使用 COleDocument,請從中衍生類別,並新增功能來管理應用程式的非 OLE 數據,以及內嵌或連結的專案。 如果您定義 CDocItem衍生類別來儲存應用程式的原生數據,您可以使用 所 COleDocument 定義的預設實作來儲存 OLE 和非 OLE 資料。 您也可以設計自己的數據結構,以便與 OLE 專案分開儲存非 OLE 數據。 如需詳細資訊,請參閱容器:複合檔案一文

CDocument 如果郵件支援 (MAPI) 存在,支援透過郵件傳送您的檔案。 COleDocument 已更新 OnFileSendMail 以正確處理複合檔。 如需詳細資訊,請參閱 MFC 中的 MAPIMAPI 支援文章。

繼承階層架構

CObject

CCmdTarget

CDocument

COleDocument

需求

標頭: afxole.h

COleDocument::AddItem

呼叫此函式以將專案新增至檔。

virtual void AddItem(CDocItem* pItem);

參數

pItem
要加入之文件專案的指標。

備註

當接受文件指標的 COleClientItemCOleServerItem 建構函式呼叫時,您不需要明確呼叫此函式。

COleDocument::ApplyPrintDevice

呼叫此函式,以變更應用程式容器檔中所有內嵌 COleClientItem 專案的列印目標裝置。

BOOL ApplyPrintDevice(const DVTARGETDEVICE* ptd);
BOOL ApplyPrintDevice(const PRINTDLG* ppd);

參數

ptd
DVTARGETDEVICE數據結構的指標,其中包含新列印目標裝置的相關信息。 可以是 NULL。

ppd
PRINTDLG數據結構的指標,其中包含新列印目標裝置的相關信息。 可以是 NULL。

傳回值

如果函式成功,則為非零;否則為 0。

備註

此函式會更新所有專案的列印目標裝置,但不會重新整理這些專案的簡報快取。 若要更新專案的簡報快取,請呼叫 COleClientItem::UpdateLink

此函式的自變數包含 OLE 用來識別目標裝置的資訊。 PRINTDLG 結構包含 Windows 用來初始化通用列印對話框的資訊。 當使用者關閉對話框之後,Windows 會傳回此結構中用戶選取專案的相關信息。 m_pd CPrintDialog 對象的成員PRINTDLG 結構。

如需詳細資訊,請參閱 Windows SDK 中的 PRINTDLG 結構。

如需詳細資訊,請參閱 Windows SDK 中的 DVTARGETDEVICE 結構。

COleDocument::COleDocument

建構 COleDocument 物件。

COleDocument();

COleDocument::EnableCompoundFile

如果您想要使用複合檔案格式來儲存檔,請呼叫此函式。

void EnableCompoundFile(BOOL bEnable = TRUE);

參數

bEnable
指定是否啟用或停用複合文件支援。

備註

這也稱為結構化記憶體。 您通常會從衍生類別的 COleDocument建構函式呼叫此函式。 如需複合文件的詳細資訊,請參閱容器:複合檔案一文

如果您未呼叫此成員函式,檔會以非結構化 (“flat”) 檔案格式儲存。

在文件啟用或停用複合檔支持之後,不應該在檔的存留期內變更設定。

COleDocument::GetInPlaceActiveItem

呼叫此函式,以取得目前在包含 pWnd識別檢視的框架視窗中已就地啟動的 OLE 專案。

virtual COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);

參數

pWnd
顯示容器檔的視窗指標。

傳回值

單一就地使用中 OLE 專案的指標;如果目前沒有任何 OLE 項目處於「就地使用中」狀態,則為 NULL。

COleDocument::GetNextClientItem

重複呼叫此函式,以存取您檔中的每一個客戶端專案。

COleClientItem* GetNextClientItem(POSITION& pos) const;

參數

pos
前一次呼叫 GetNextClientItem所設定之 POSITION 值的參考;成員函式會 GetStartPosition 傳回初始值。

傳回值

檔中下一個客戶端專案的指標,如果沒有其他客戶端專案,則為 NULL。

備註

每次呼叫之後,pos 的值都會針對檔中的下一個項目進行設定,這可能不是客戶端專案。

範例

// pDoc points to a COleDocument object
POSITION pos = pDoc->GetStartPosition();
COleClientItem* pItem;
CString strType;
while ((pItem = pDoc->GetNextClientItem(pos)) != NULL)
{
   // Use pItem
   pItem->GetUserType(USERCLASSTYPE_FULL, strType);
   TRACE(strType);
}

COleDocument::GetNextItem

重複呼叫此函式,以存取您檔中的每一個專案。

virtual CDocItem* GetNextItem(POSITION& pos) const;

參數

pos
前一次呼叫 GetNextItem所設定之 POSITION 值的參考;成員函式會 GetStartPosition 傳回初始值。

傳回值

位於指定位置之文件專案的指標。

備註

每次呼叫之後,pos 的值都會設定為檔中下一個專案的 POSITION 值。 如果擷取的專案是檔中的最後一個專案,則 pos 的新值為 NULL。

範例

// pDoc points to a COleDocument object
POSITION pos = pDoc->GetStartPosition();
CDocItem* pItem;
CString strType;
while (pos != NULL)
{
   pItem = pDoc->GetNextItem(pos);
   // Use pItem
   if (pItem->IsKindOf(RUNTIME_CLASS(COleClientItem)))
   {
      ((COleClientItem*)pItem)->GetUserType(USERCLASSTYPE_FULL, strType);
      TRACE(strType);
   }
}

COleDocument::GetNextServerItem

重複呼叫此函式,以存取您檔中的每一個伺服器專案。

COleServerItem* GetNextServerItem(POSITION& pos) const;

參數

pos
前一次呼叫 GetNextServerItem所設定之 POSITION 值的參考;成員函式會 GetStartPosition 傳回初始值。

傳回值

檔中下一個伺服器專案的指標,如果沒有其他伺服器專案,則為 NULL。

備註

每次呼叫之後,都會針對檔中的下一個項目設定 pos,這可能不是伺服器專案。

範例

// pDoc points to a COleDocument object
POSITION pos = pDoc->GetStartPosition();
COleServerItem* pItem;
while ((pItem = pDoc->GetNextServerItem(pos)) != NULL)
{
   // Use pItem
}

COleDocument::GetPrimarySelectedItem

由架構呼叫,以擷取指定檢視中目前選取的 OLE 專案。

virtual COleClientItem* GetPrimarySelectedItem(CView* pView);

參數

pView
顯示檔的作用中檢視物件的指標。

傳回值

單一選取之 OLE 專案的指標;如果未選取任何 OLE 專案,或已選取多個專案,則為 NULL。

備註

默認實作會搜尋包含的 OLE 專案清單,尋找單一選取的專案,並傳回其指標。 如果未選取任何專案,或選取多個專案,則函式會傳回NULL。 您必須覆寫 CView::IsSelected 檢視類別中的成員函式,此函式才能運作。 如果您有儲存包含的 OLE 專案的方法,請覆寫此函式。

COleDocument::GetStartPosition

呼叫此函式以取得檔中第一個專案的位置。

virtual POSITION GetStartPosition() const;

傳回值

POSITION 值,可用來開始逐一查看檔的專案;如果文件沒有專案,則為 NULL。

備註

傳回的值傳遞到 GetNextItemGetNextClientItemGetNextServerItem

COleDocument::HasBlankItems

呼叫此函式,以判斷檔是否包含任何空白專案。

BOOL HasBlankItems() const;

傳回值

如果檔包含任何空白專案,則為非零;否則為 0。

備註

空白專案是其矩形空白的專案。

COleDocument::OnEditChangeIcon

顯示 [OLE 變更圖示] 對話框,並將代表目前選取的 OLE 專案的圖示變更為使用者在對話框中選取的圖示。

afx_msg void OnEditChangeIcon();

備註

OnEditChangeIcon 會建立並啟動 [ COleChangeIconDialog 變更圖示] 對話方塊。

COleDocument::OnEditConvert

顯示 [OLE 轉換] 對話框,並根據對話框中的用戶選取專案,轉換或啟動目前選取的 OLE 專案。

afx_msg void OnEditConvert();

備註

OnEditConvert 會建立並啟動 [ COleConvertDialog 轉換] 對話框。

轉換的範例是將 Microsoft Word 檔轉換成 WordPad 檔。

顯示 [OLE 編輯/連結] 對話框。

afx_msg void OnEditLinks();

備註

OnEditLinks 會建立並啟動 [連結] COleLinksDialog 對話框,讓使用者變更連結的物件。

COleDocument::OnFileSendMail

透過常駐郵件主機傳送郵件(如果有的話),以檔做為附件。

afx_msg void OnFileSendMail();

備註

OnFileSendMail 呼叫 OnSaveDocument ,將未命名和修改的檔串行化為臨時檔,然後透過電子郵件傳送。 如果檔尚未修改,則不需要暫存盤;會傳送原始的 。 OnFileSendMail 如果尚未載入,則會載入MAPI32.DLL。

不同於的 CDocumentOnFileSendMail作,此函式會正確處理複合檔案。

如需詳細資訊,請參閱 MFC 文章中的 MAPI 主題和 MAPI 支援。

COleDocument::OnShowViews

架構會在文件的可見度狀態變更之後呼叫此函式。

virtual void OnShowViews(BOOL bVisible);

參數

bVisible
指出檔是否已變成可見或看不見。

備註

此函式的預設版本不會執行任何動作。 如果您的應用程式在檔可見度變更時必須執行任何特殊處理,請覆寫它。

COleDocument::OnUpdateEditChangeIcon

由架構呼叫,以更新 [編輯] 功能表上的 [變更圖示] 命令。

afx_msg void OnUpdateEditChangeIcon(CCmdUI* pCmdUI);

參數

pCmdUI
結構的指標 CCmdUI ,表示產生更新命令的功能表。 更新處理程式會透過 pCmdUI 呼叫 Enable 結構的成員函CCmdUI式,以更新使用者介面。

備註

OnUpdateEditChangeIcon 會根據檔中是否有有效的圖示,更新命令的使用者介面。 覆寫此函式以變更行為。

COleDocument::OnUpdateEditLinksMenu

由架構呼叫,以更新 [編輯] 功能表上的 [連結] 命令。

afx_msg void OnUpdateEditLinksMenu(CCmdUI* pCmdUI);

參數

pCmdUI
結構的指標 CCmdUI ,表示產生更新命令的功能表。 更新處理程式會透過 pCmdUI 呼叫 Enable 結構的成員函CCmdUI式,以更新使用者介面。

備註

從檔中的第一個 OLE 項目開始, OnUpdateEditLinksMenu 存取每個專案、測試專案是否為連結,以及如果它是連結,請啟用 Links 命令。 覆寫此函式以變更行為。

COleDocument::OnUpdateObjectVerbMenu

由架構呼叫,以更新 [編輯] 功能表上的 ObjectName 命令,以及從 ObjectName 命令存取的 Verb 子功能表,其中 ObjectName 是內嵌在檔中的 OLE 物件名稱。

afx_msg void OnUpdateObjectVerbMenu(CCmdUI* pCmdUI);

參數

pCmdUI
結構的指標 CCmdUI ,表示產生更新命令的功能表。 更新處理程式會透過 pCmdUI 呼叫 Enable 結構的成員函CCmdUI式,以更新使用者介面。

備註

OnUpdateObjectVerbMenu會根據檔中是否有有效的物件,更新 ObjectName 命令的使用者介面。 如果物件存在, 則會啟用 [編輯] 功能表上的 ObjectName 命令。 選取此功能表命令時,會顯示 Verb 子選單。 Verb 子功能表包含物件可用的所有動詞命令,例如 Edit、Properties 等等。 覆寫此函式以變更行為。

COleDocument::OnUpdatePasteLinkMenu

由架構呼叫,以判斷是否可以從剪貼簿貼上連結的 OLE 專案。

afx_msg void OnUpdatePasteLinkMenu(CCmdUI* pCmdUI);

參數

pCmdUI
結構的指標 CCmdUI ,表示產生更新命令的功能表。 更新處理程式會透過 pCmdUI 呼叫 Enable 結構的成員函CCmdUI式,以更新使用者介面。

備註

[貼上特殊] 功能表命令會啟用或停用,視專案是否可以貼到檔中而定。

COleDocument::OnUpdatePasteMenu

由架構呼叫,以判斷是否可以從剪貼簿貼上內嵌的 OLE 專案。

afx_msg void OnUpdatePasteMenu(CCmdUI* pCmdUI);

參數

pCmdUI
結構的指標 CCmdUI ,表示產生更新命令的功能表。 更新處理程式會透過 pCmdUI 呼叫 Enable 結構的成員函CCmdUI式,以更新使用者介面。

備註

[貼上] 功能表命令和按鈕會根據專案是否可以貼到檔中而啟用或停用。

COleDocument::RemoveItem

呼叫此函式以從檔中移除專案。

virtual void RemoveItem(CDocItem* pItem);

參數

pItem
要移除之文件專案的指標。

備註

您通常不需要明確呼叫此函式;由和COleServerItem的解構函式COleClientItem呼叫。

COleDocument::UpdateModifiedFlag

呼叫此函式,將文件標示為已修改,如果任何包含的 OLE 專案已經修改。

virtual void UpdateModifiedFlag();

備註

這可讓架構在關閉之前提示使用者儲存檔,即使檔中的原生數據尚未修改也一樣。

另請參閱

MFC 範例容器
MFC 範例 MFCBIND
CDocument 類別
階層架構圖表