共用方式為


COleServerDoc 類別

OLE 伺服器文件的基底類別。

語法

class AFX_NOVTABLE COleServerDoc : public COleLinkingDoc

成員

公用建構函式

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

公用方法

名稱 描述
COleServerDoc::ActivateDocObject 啟動相關聯的 DocObject 檔。
COleServerDoc::ActivateInPlace 開機檔案進行就地編輯。
COleServerDoc::D eactivateAndUndo 停用伺服器的使用者介面。
COleServerDoc::D iscardUndoState 捨棄復原狀態資訊。
COleServerDoc::GetClientSite 擷取基礎 IOleClientSite 介面的指標。
COleServerDoc::GetEmbeddedItem 傳回代表整個檔之專案的指標。
COleServerDoc::GetItemClipRect 傳回目前進行就地編輯的裁剪矩形。
COleServerDoc::GetItemPosition 傳回相對於容器應用程式工作區的目前位置矩形,以進行就地編輯。
COleServerDoc::GetZoomFactor 傳回以圖元為單位的縮放因數。
COleServerDoc::IsDocObject 判斷檔是否為 DocObject。
COleServerDoc::IsEmbedded 指出檔是內嵌在容器檔案中,還是執行獨立檔。
COleServerDoc::IsInPlaceActive 如果專案目前已就地啟動,則傳回 TRUE。
COleServerDoc::NotifyChanged 通知容器使用者已變更檔。
COleServerDoc::NotifyClosed 通知容器使用者已關閉檔。
COleServerDoc::NotifyRename 通知容器使用者已重新命名檔。
COleServerDoc::NotifySaved 通知容器使用者已儲存檔。
COleServerDoc::OnDeactivate 當使用者停用已就地啟用的專案時,由架構呼叫。
COleServerDoc::OnDeactivateUI 由架構呼叫,以終結針對就地啟用所建立的控制項和其他使用者介面專案。
COleServerDoc::OnDocWindowActivate 當容器的檔框架視窗啟動或停用時,由架構呼叫。
COleServerDoc::OnResizeBorder 當容器應用程式的框架視窗或文件視窗調整大小時,由架構呼叫。
COleServerDoc::OnShowControlBars 由架構呼叫以顯示或隱藏控制項列以進行就地編輯。
COleServerDoc::OnUpdateDocument 儲存內嵌專案的伺服器檔時,由架構呼叫,並更新容器的專案複本。
COleServerDoc::RequestPositionChange 變更就地編輯方塊架的位置。
COleServerDoc::SaveEmbedding 告知容器應用程式儲存檔。
COleServerDoc::ScrollContainerBy 捲動容器檔案。
COleServerDoc::UpdateAllItems 通知容器使用者已變更檔。

受保護的方法

名稱 描述
COleServerDoc::CreateInPlaceFrame 由架構呼叫以建立框架視窗以進行就地編輯。
COleServerDoc::D estroyInPlaceFrame 由架構呼叫以終結框架視窗以進行就地編輯。
COleServerDoc::GetDocObjectServer 覆寫此函式以建立新的 CDocObjectServer 物件,並指出此檔是 DocObject 容器。
COleServerDoc::OnClose 當容器要求關閉檔時,由架構呼叫。
COleServerDoc::OnExecOleCmd 執行指定的命令,或顯示命令的說明。
COleServerDoc::OnFrameWindowActivate 當容器的框架視窗啟動或停用時,由架構呼叫。
COleServerDoc::OnGetEmbeddedItem 呼叫 以取得 COleServerItem 代表整個檔的 ,用來取得內嵌專案。 需要實作。
COleServerDoc::OnReactivateAndUndo 由架構呼叫,以復原就地編輯期間所做的變更。
COleServerDoc::OnSetHostNames 當容器設定内嵌物件的視窗標題時,由架構呼叫。
COleServerDoc::OnSetItemRects 由架構呼叫,以將就地編輯方塊架視窗放置在容器應用程式的視窗中。
COleServerDoc::OnShowDocument 由架構呼叫以顯示或隱藏檔。

備註

伺服器檔可以包含 COleServerItem 物件,這些物件代表內嵌或連結專案的伺服器介面。 當容器啟動伺服器應用程式以編輯內嵌專案時,專案會載入為自己的伺服器檔; COleServerDoc 物件只包含一個 COleServerItem 物件,包含整個檔。 當容器啟動伺服器應用程式以編輯連結的專案時,會從磁片載入現有的檔;檔內容的一部分會反白顯示,以指出連結的專案。

COleServerDoc物件也可以包含 COleClientItem 類別的專案 。 這可讓您建立容器伺服器應用程式。 架構會提供函式,以在維護 COleServerItem 物件時正確儲存 COleClientItem 專案。

如果您的伺服器應用程式不支援連結,伺服器檔一律只會包含一個伺服器專案,以檔表示整個内嵌物件。 如果您的伺服器應用程式支援連結,則每次將選取專案複製到剪貼簿時,都必須建立伺服器專案。

若要使用 COleServerDoc ,請從它衍生類別,並實 作 OnGetEmbeddedItem 成員函式,這可讓您的伺服器支援內嵌專案。 從 衍生類別 COleServerItem 以實作檔中的專案,並從 傳回該類別 OnGetEmbeddedItem 的物件。

若要支援連結的專案, COleServerDoc 請提供 OnGetLinkedItem 成員函式。 如果您有自己的管理檔專案的方式,您可以使用預設實作或覆寫它。

針對應用程式支援的每個伺服器類型檔,您需要一個 COleServerDoc 衍生類別。 例如,如果您的伺服器應用程式支援工作表和圖表,您需要兩個 COleServerDoc 衍生類別。

如需伺服器的詳細資訊,請參閱伺服器:實作伺服器 一文

繼承階層架構

CObject

CCmdTarget

CDocument

COleDocument

COleLinkingDoc

COleServerDoc

需求

標頭: afxole.h

COleServerDoc::ActivateDocObject

啟動相關聯的 DocObject 檔。

void ActivateDocObject();

備註

根據預設, COleServerDoc 不支援使用中檔(也稱為 DocObjects)。 若要啟用此支援,請參閱 GetDocObjectServer 和 CDocObjectServer 類別

COleServerDoc::ActivateInPlace

啟動專案以進行就地編輯。

BOOL ActivateInPlace();

傳回值

如果成功,則為非零;否則為 0,表示專案已完全開啟。

備註

此函式會執行就地啟用所需的所有作業。 它會建立就地框架視窗、啟動它並將其大小調整為專案、設定共用功能表和其他控制項、將專案捲動到檢視中,並將焦點設定為就地框架視窗。

此函式是由 COleServerItem::OnShow 的預設實作 所呼叫。 如果您的應用程式支援另一個動詞進行就地啟用(例如 Play),請呼叫此函式。

COleServerDoc::COleServerDoc

COleServerDoc建構物件,而不使用 OLE 系統 DLL 連接。

COleServerDoc();

備註

您必須呼叫 COleLinkingDoc::Register 以開啟與 OLE 的通訊。 如果您在應用程式中使用 COleTemplateServer COleLinkingDoc::Register 則會藉由 COleLinkingDocOnNewDocumentOnOpenDocumentOnSaveDocument 實作為您呼叫 。

COleServerDoc::CreateInPlaceFrame

架構會呼叫此函式來建立框架視窗以進行就地編輯。

virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);

參數

pParentWnd
容器應用程式的父視窗指標。

傳回值

就地框架視窗的指標,如果失敗,則為 Null。

備註

預設實作會使用檔範本中指定的資訊來建立框架。 使用的檢視是針對檔建立的第一個檢視。 此檢視會暫時與原始框架中斷連結,並附加至新建立的框架。

這是可覆寫的進階。

COleServerDoc::D eactivateAndUndo

如果您的應用程式支援復原,且使用者在啟動專案之後,但在編輯專案之前,選擇 [復原] ,請呼叫此函式。

BOOL DeactivateAndUndo();

傳回值

非零成功,否則為 0。

備註

如果使用 Microsoft Foundation Class Library 撰寫容器應用程式,呼叫此函式會導致 呼叫 COleClientItem::OnDeactivateAndUndo ,這會停用伺服器的使用者介面。

COleServerDoc::D estroyInPlaceFrame

架構會呼叫此函式來終結就地框架視窗,並在就地啟用之前,將伺服器應用程式的檔視窗傳回其狀態。

virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);

參數

pFrameWnd
要終結之就地框架視窗的指標。

備註

這是可覆寫的進階。

COleServerDoc::D iscardUndoState

如果使用者執行無法復原的編輯作業,請呼叫此函式以強制容器應用程式捨棄其復原狀態資訊。

BOOL DiscardUndoState();

傳回值

非零成功,否則為 0。

備註

提供此函式,讓支援復原的伺服器可以釋放無法使用之復原狀態資訊所取用的資源。

COleServerDoc::GetClientSite

擷取基礎 IOleClientSite 介面的指標。

LPOLECLIENTSITE GetClientSite() const;

傳回值

擷取基礎 IOleClientSite 介面的指標。

COleServerDoc::GetDocObjectServer

覆寫此函式以建立新 CDocObjectServer 專案,並傳回其指標。

virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);

參數

pDocSite
IOleDocumentSite將這份檔連接到伺服器的介面指標。

傳回值

CDocObjectServer 指標;如果作業失敗,則為 Null。

備註

啟動 DocObject 伺服器時,非 Null 指標的傳回會顯示用戶端可以支援 DocObjects。 預設實作會傳回 Null。

支援 DocObjects 的檔一般實作只會配置新的 CDocObjectServer 物件,並將它傳回給呼叫端。 例如:

CDocObjectServer* CMFCOleServerDoc::GetDocObjectServer(LPOLEDOCUMENTSITE pSite)
{
   return new CDocObjectServer(this, pSite);
}

COleServerDoc::GetEmbeddedItem

呼叫此函式,以取得代表整個檔之專案的指標。

COleServerItem* GetEmbeddedItem();

傳回值

代表整個檔之專案的指標;如果作業失敗,則為 Null。

備註

它會呼叫 COleServerDoc::OnGetEmbeddedItem ,這是沒有預設實作的虛擬函式。

COleServerDoc::GetItemClipRect

GetItemClipRect呼叫成員函式,以取得正在就地編輯之專案的裁剪矩形座標。

void GetItemClipRect(LPRECT lpClipRect) const;

參數

lpClipRect
RECT要接收專案裁剪矩形座標的結構或 CRect 物件的指標。

備註

座標相對於容器應用程式視窗的工作區以圖元為單位。

繪製不應該發生在裁剪矩形外。 通常,繪圖會自動受到限制。 使用此函式來判斷使用者是否已捲動到檔可見部分之外;如果是,請視需要透過呼叫 ScrollContainerBy 來捲動容器檔案。

COleServerDoc::GetItemPosition

GetItemPosition呼叫成員函式,以取得正在就地編輯之專案的座標。

void GetItemPosition(LPRECT lpPosRect) const;

參數

lpPosRect
RECT要接收專案座標之結構或 CRect 物件的指標。

備註

座標相對於容器應用程式視窗的工作區以圖元為單位。

專案的位置可以與目前的裁剪矩形進行比較,以判斷專案在畫面上可見或看不見的範圍。

COleServerDoc::GetZoomFactor

成員 GetZoomFactor 函式會決定已啟動進行就地編輯的專案「縮放因數」。

BOOL GetZoomFactor(
    LPSIZE lpSizeNum = NULL,
    LPSIZE lpSizeDenom = NULL,
    LPCRECT lpPosRect = NULL) const;

參數

lpSizeNum
類別物件的 CSize 指標,這個物件會保存縮放因數的分子。 可以是 Null。

lpSizeDenom
類別物件的 CSize 指標,這個物件會保存縮放因數的分母。 可以是 Null。

lpPosRect
類別物件的 CRect 指標,描述專案的新位置。 如果這個引數為 Null,函式會使用專案的目前位置。

傳回值

如果專案啟用就地編輯,且其縮放因數不是 100% (1:1):否則為 0。

備註

縮放因數,以圖元為單位,是專案大小與其目前範圍的比例。 如果容器應用程式尚未設定專案的範圍,則會使用其自然範圍(由 COleServerItem::OnGetExtent 決定 )。

函式會將其前兩個引數設定為專案的「縮放因數」的分子和分母。如果未就地編輯專案,函式會將這些引數設定為預設值 100% (或 1:1),並傳回零。 如需詳細資訊,請參閱技術附注 40、 MFC/OLE 就地調整大小和縮放

COleServerDoc::IsDocObject

判斷檔是否為 DocObject。

BOOL IsDocObject() const;

傳回值

如果檔是 DocObject,則為 TRUE;否則為 FALSE。

COleServerDoc::IsEmbedded

IsEmbedded呼叫成員函式,以判斷檔是否代表內嵌在容器中的物件。

BOOL IsEmbedded() const;

傳回值

如果 COleServerDoc 物件是代表內嵌在容器中的物件的檔,則為非零,否則為 0。

備註

從檔案載入的檔並未內嵌,但容器應用程式可能會將其當作連結來操作。 內嵌在容器檔案中的檔會被視為內嵌。

COleServerDoc::IsInPlaceActive

IsInPlaceActive呼叫成員函式,以判斷專案目前是否處於就地作用中狀態。

BOOL IsInPlaceActive() const;

傳回值

如果物件已就地使用中, COleServerDoc 則為非零,否則為 0。

COleServerDoc::NotifyChanged

呼叫此函式,以通知連線至檔的所有連結專案已變更檔。

void NotifyChanged();

備註

一般而言,您會在使用者變更某些全域屬性之後呼叫此函式,例如伺服器檔的維度。 如果 OLE 專案連結至具有自動連結的檔,則會更新專案以反映變更。 在以 Microsoft Foundation Class Library 撰寫的 容器應用程式中,會呼叫 的 COleClientItem OnChange 成員函式。

注意

此函式隨附于 OLE 1 的相容性。 新的應用程式應該使用 UpdateAllItems

COleServerDoc::NotifyClosed

呼叫此函式,以通知容器已關閉檔。

void NotifyClosed();

備註

當使用者從 [檔案] 功能表選擇 [關閉] 命令時, NotifyClosed 會由 COleServerDoc OnCloseDocument 成員函式的實作 呼叫。 在以 Microsoft Foundation Class Library 撰寫的 容器應用程式中,會呼叫 的 COleClientItem OnChange 成員函式。

COleServerDoc::NotifyRename

在使用者重新命名伺服器檔之後呼叫此函式。

void NotifyRename(LPCTSTR lpszNewName);

參數

lpszNewName
指定伺服器檔新名稱之字串的指標;這通常是完整路徑。

備註

當使用者從 [檔案] 功能表選擇 [另存新檔] 命令時, NotifyRename 會由 COleServerDoc OnSaveDocument 成員函式的實作 呼叫。 此函式會通知 OLE 系統 DLL,進而通知容器。 在以 Microsoft Foundation Class Library 撰寫的 容器應用程式中,會呼叫 的 COleClientItem OnChange 成員函式。

COleServerDoc::NotifySaved

在使用者儲存伺服器檔之後呼叫此函式。

void NotifySaved();

備註

當使用者從 [檔案] 功能表選擇 [儲存] 命令時, NotifySaved 會藉由 COleServerDoc OnSaveDocument 的實作 為您呼叫。 此函式會通知 OLE 系統 DLL,進而通知容器。 在以 Microsoft Foundation Class Library 撰寫的 容器應用程式中,會呼叫 的 COleClientItem OnChange 成員函式。

COleServerDoc::OnClose

當容器要求關閉伺服器檔時,由架構呼叫。

virtual void OnClose(OLECLOSE dwCloseOption);

參數

dwCloseOption
列舉 OLECLOSE 中的值。 這個參數的值可以是下列其中一個:

  • OLECLOSE_SAVEIFDIRTY 如果檔案已修改,則會儲存檔案。

  • OLECLOSE_NOSAVE檔案已關閉而不儲存。

  • OLECLOSE_PROMPTSAVE 如果檔案已修改,系統會提示使用者儲存檔案。

備註

預設實作會呼叫 CDocument::OnCloseDocument

如需詳細資訊和其他值,請參閱 Windows SDK 中的 OLECLOSE

COleServerDoc::OnDeactivate

當使用者停用目前就地作用中的內嵌或連結專案時,由架構呼叫。

virtual void OnDeactivate();

備註

此函式會將容器應用程式的使用者介面還原為其原始狀態,並終結為就地啟用所建立的任何功能表和其他控制項。

此時應該無條件釋放復原狀態資訊。

如需詳細資訊,請參閱 Activation .。

COleServerDoc::OnDeactivateUI

當使用者停用已就地啟用的專案時呼叫。

virtual void OnDeactivateUI(BOOL bUndoable);

參數

bUndoable
指定是否可以復原編輯變更。

備註

此函式會將容器應用程式的使用者介面還原為其原始狀態,並隱藏為就地啟用所建立的任何功能表和其他控制項。

架構一律會將 bUndoable 設定 為 FALSE。 如果伺服器支援復原,而且有可復原的作業,請使用 bUndoable 設定為 TRUE 呼叫基類實 作。

COleServerDoc::OnDocWindowActivate

架構會呼叫此函式來啟動或停用檔視窗以進行就地編輯。

virtual void OnDocWindowActivate(BOOL bActivate);

參數

bActivate
指定要啟動或停用文件視窗。

備註

預設實作會視需要移除或新增框架層級的使用者介面元素。 如果您想要在包含專案的檔啟動或停用時執行其他動作,請覆寫此函式。

如需詳細資訊,請參閱 Activation .。

COleServerDoc::OnExecOleCmd

架構會呼叫此函式來執行指定的命令或顯示命令的說明。

virtual HRESULT OnExecOleCmd(
    const GUID* pguidCmdGroup,
    DWORD nCmdID,
    DWORD nCmdExecOpt,
    VARIANTARG* pvarargIn,
    VARIANTARG* pvarargOut);

參數

pguidCmdGroup
識別一組命令之 GUID 的指標。 可以是 Null,表示預設命令群組。

nCmdID
要執行的命令。 必須位於 pguidCmdGroup 識別的群組中。

nCmdExecOut
物件應該執行命令的方式,從 OLECMDEXECOPT 列舉執行下列其中一或多個值:

OLECMDEXECOPT_DODEFAULT

OLECMDEXECOPT_PROMPTUSER

OLECMDEXECOPT_DONTPROMPTUSER

OLECMDEXECOPT_SHOWHELP

pvarargIn
包含命令輸入引數的 VARIANTARG 指標。 可以是 Null。

pvarargOut
VARIANTARG 的指標,可從命令接收輸出傳回值。 可以是 Null。

傳回值

如果成功,則傳回S_OK;否則,下列其中一個錯誤碼:

Description
E_UNEXPECTED 發生非預期的錯誤
E_FAIL 發生錯誤
E_NOTIMPL 指出 MFC 本身應該嘗試轉譯並分派命令
OLECMDERR_E_UNKNOWNGROUP pguidCmdGroup 不是 Null,但未指定可辨識的命令群組
OLECMDERR_E_NOTSUPPORTED nCmdID 無法辨識為群組 pguidCmdGroup 中的有效命令
OLECMDERR_DISABLED nCmdID 識別的命令已停用且無法執行
OLECMDERR_NOHELP 呼叫端在 nCmdID 識別的命令上要求說明,但沒有可用的說明
OLECMDERR_CANCELED 使用者已取消執行

備註

COleCmdUI 可用來啟用、更新及設定 DocObject 使用者介面命令的其他屬性。 初始化命令之後,您可以使用 來執行它們 OnExecOleCmd

架構會在嘗試翻譯及分派 OLE 檔命令之前呼叫 函式。 您不需要覆寫此函式來處理標準 OLE 檔命令,但如果您想要處理自己的自訂命令或處理接受參數或傳回結果的命令,則必須提供此函式的覆寫。

大部分的命令不會採用引數或傳回值。 對於大部分的命令,呼叫端可以傳遞 pvarargIn pvarargOut 的 NUL。 對於預期輸入值的命令,呼叫端可以宣告和初始化 VARIANTARG 變數,並將指標傳遞至 pvarargIn 中的 變數。 對於需要單一值的命令,引數可以直接儲存在 VARIANTARG 中,並傳遞至 函式。 多個引數必須使用其中一個支援的型別在 VARIANTARG 內封裝(例如 IDispatch 和 SAFEARRAY )。

同樣地,如果命令傳回引數,則呼叫端應該宣告 VARIANTARG、將其初始化為VT_EMPTY,並在 pvarargOut 傳遞其位址。 如果命令傳回單一值,物件可以直接將該值儲存在 pvarargOut 。 必須以適合 VARIANTARG 的某種方式封裝多個輸出值。

此函式的基類實作會逐步執行與命令目標相關聯的OLE_COMMAND_MAP結構,並嘗試將命令分派至適當的處理常式。 基類實作只適用于不接受引數或傳回值的命令。 如果您需要處理接受引數或傳回值的命令,您必須覆寫此函式,並自行使用 pvarargIn pvarargOut 參數。

COleServerDoc::OnFrameWindowActivate

當容器應用程式的框架視窗啟動或停用時,架構會呼叫此函式。

virtual void OnFrameWindowActivate(BOOL bActivate);

參數

bActivate
指定要啟動或停用框架視窗。

備註

預設實作會取消框架視窗可能處於的任何說明模式。 如果您想要在啟動或停用框架視窗時執行特殊處理,請覆寫此函式。

如需詳細資訊,請參閱 Activation .。

COleServerDoc::OnGetEmbeddedItem

當容器應用程式呼叫伺服器應用程式以建立或編輯內嵌專案時,由架構呼叫。

virtual COleServerItem* OnGetEmbeddedItem() = 0;

傳回值

代表整個檔之專案的指標;如果作業失敗,則為 Null。

備註

沒有預設的實作。 您必須覆寫此函式,才能傳回代表整個檔的專案。 這個傳回值應該是衍生類別的物件 COleServerItem

COleServerDoc::OnReactivateAndUndo

當使用者選擇復原已就地啟用、變更及後續停用之專案的變更時,架構會呼叫此函式。

virtual BOOL OnReactivateAndUndo();

傳回值

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

備註

預設實作除了傳回 FALSE 以外,不會執行任何動作,以指出失敗。

如果您的應用程式支援復原,請覆寫此函式。 通常您會執行復原作業,然後藉由呼叫 ActivateInPlace 來啟動專案。 如果容器應用程式是使用 Microsoft Foundation Class Library 撰寫的,呼叫 COleClientItem::ReactivateAndUndo 會導致呼叫此函式。

COleServerDoc::OnResizeBorder

當容器應用程式的框架視窗變更大小時,架構會呼叫此函式。

virtual void OnResizeBorder(
    LPCRECT lpRectBorder,
    LPOLEINPLACEUIWINDOW lpUIWindow,
    BOOL bFrame);

參數

lpRectBorder
RECT結構或 CRect 物件指標,指定框線的座標。

lpUIWindow
擁有目前就地編輯會話之類別 IOleInPlaceUIWindow 物件的指標。

bFrame
如果 lpUIWindow 指向容器應用程式的最上層框架視窗,則為 TRUE;如果 lpUIWindow 指向容器應用程式的檔層級框架視窗,則為 FALSE。

備註

此函式會根據新的視窗大小來調整工具列和其他使用者介面元素的大小。

如需詳細資訊,請參閱 Windows SDK 中的 IOleInPlaceUIWindow

這是可覆寫的進階。

COleServerDoc::OnSetHostNames

當容器設定或變更此檔的主機名稱時,由架構呼叫。

virtual void OnSetHostNames(
    LPCTSTR lpszHost,
    LPCTSTR lpszHostObj);

參數

lpszHost
指定容器應用程式名稱的字串指標。

lpszHostObj
指定檔容器名稱之字串的指標。

備註

預設實作會變更參照此檔之所有檢視的檔標題。

如果您的應用程式透過不同的機制設定標題,請覆寫此函式。

COleServerDoc::OnSetItemRects

架構會呼叫此函式,將就地編輯方塊架視窗放置在容器應用程式的框架視窗中。

virtual void OnSetItemRects(
    LPCRECT lpPosRect,
    LPCRECT lpClipRect);

參數

lpPosRect
RECT結構或 CRect 物件的指標,指定相對於容器應用程式工作區的就地框架視窗位置。

lpClipRect
RECT結構或 CRect 物件的指標,指定相對於容器應用程式工作區的就地框架視窗裁剪矩形。

備註

視需要覆寫此函式以更新檢視的縮放比例。

此函式通常是為了回應 RequestPositionChange 呼叫而呼叫,不過容器可以隨時呼叫此函式來要求就地專案的位置變更。

COleServerDoc::OnShowControlBars

架構會呼叫此函式,以顯示或隱藏與 pFrameWnd 識別之框架視窗相關聯的伺服器應用程式控制列。

virtual void OnShowControlBars(
    CFrameWnd* pFrameWnd,
    BOOL bShow);

參數

pFrameWnd
控制項列應隱藏或顯示之框架視窗的指標。

bShow
判斷控制項列是否顯示或隱藏。

備註

預設實作會列舉該框架視窗擁有的所有控制列,並隱藏或顯示它們。

COleServerDoc::OnShowDocument

架構會在伺服器檔必須隱藏或顯示時呼叫 OnShowDocument 函式。

virtual void OnShowDocument(BOOL bShow);

參數

bShow
指定要顯示或隱藏檔的使用者介面。

備註

如果 bShow 為 TRUE,預設實作會視需要啟動伺服器應用程式,並讓容器應用程式捲動其視窗,讓專案可見。 如果 bShow 為 FALSE,則預設實作會透過呼叫 OnDeactivate 停用專案,然後終結或隱藏為檔建立的所有框架視窗,但第一個框架視窗除外。 如果沒有可見的檔保留,預設實作會隱藏伺服器應用程式。

COleServerDoc::OnUpdateDocument

儲存複合檔案中內嵌專案的檔時,由架構呼叫。

virtual BOOL OnUpdateDocument();

傳回值

如果已成功更新檔,則為非零;否則為 0。

備註

預設實作會呼叫 COleServerDoc::NotifySaved COleServerDoc::SaveEmbedding 成員函式,然後將檔標示為乾淨。 如果您想要在更新內嵌專案時執行特殊處理,請覆寫此函式。

COleServerDoc::RequestPositionChange

呼叫此成員函式,讓容器應用程式變更專案的位置。

void RequestPositionChange(LPCRECT lpPosRect);

參數

lpPosRect
RECT結構或 CRect 包含專案新位置的物件指標。

備註

當就地使用中專案中的資料已變更時,通常會呼叫此函式(搭配 UpdateAllItems 使用中)。 在此呼叫之後,容器可能會或可能不會藉由呼叫 OnSetItemRects 來執行變更。 產生的位置可能與所要求的位置不同。

COleServerDoc::SaveEmbedding

呼叫此函式,告知容器應用程式儲存内嵌物件。

void SaveEmbedding();

備註

此函式會自動從 OnUpdateDocument 呼叫。 請注意,此函式會使專案在磁片上更新,因此通常只會因為特定使用者動作而呼叫它。

COleServerDoc::ScrollContainerBy

ScrollContainerBy呼叫成員函式,依以圖元表示 sizeScroll 的數量捲動容器檔案。

BOOL ScrollContainerBy(CSize sizeScroll);

參數

sizeScroll
指出容器檔案要捲動到多遠。

傳回值

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

備註

正值表示向下和向右捲動;負值表示向上和向左捲動。

COleServerDoc::UpdateAllItems

呼叫此函式,以通知連線至檔的所有連結專案已變更檔。

void UpdateAllItems(
    COleServerItem* pSender,
    LPARAM lHint = 0L,
    CObject* pHint = NULL,
    DVASPECT nDrawAspect = DVASPECT_CONTENT);

參數

pSender
修改檔的專案指標,如果所有專案都要更新,則為 Null。

lHint
包含修改的相關資訊。

pHint
儲存修改相關資訊的物件指標。

nDrawAspect
決定要繪製專案的方式。 這是來自 DVASPECT 列舉的值。 這個參數的值可以是下列其中一個:

  • DVASPECT_CONTENT Item 是以可顯示為容器内嵌物件的方式表示。

  • DVASPECT_THUMBNAIL專案會以「縮圖」表示呈現,以便顯示在流覽工具中。

  • DVASPECT_ICON Item 是由圖示表示。

  • DVASPECT_DOCPRINT Item 會以 [檔案] 功能表中的 [列印] 命令列印時一樣呈現。

備註

在使用者變更伺服器檔之後,您通常會呼叫此函式。 如果 OLE 專案連結至具有自動連結的檔,則會更新專案以反映變更。 在以 Microsoft Foundation Class Library 撰寫的 容器應用程式中,會呼叫 的 COleClientItem OnChange 成員函式。

此函式會針對檔的每個專案呼叫 OnUpdate 成員函式,但傳送專案、傳遞 pHint lHint nDrawAspect 除外。 使用這些參數,將有關修改檔的資訊傳遞給專案。 您可以使用 lHint 編碼資訊 ,也可以定義 CObject 衍生類別來儲存修改的相關資訊,並使用 pHint 傳遞該類別 的物件。 OnUpdate覆寫衍生類別中的 COleServerItem 成員函式,根據專案簡報是否已變更,將每個專案的更新優化。

另請參閱

MFC 範例 HIERSVR
COleLinkingDoc 類別
階層架構圖表
COleDocument 類別
COleLinkingDoc 類別
COleTemplateServer 類別