共用方式為


COleClientItem 類別

定義 OLE 項目的容器介面。

語法

class COleClientItem : public CDocItem

成員

公用建構函式

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

公用方法

名稱 描述
COleClientItem::Activate 開啟作業的 OLE 專案,然後執行指定的動詞。
COleClientItem::ActivateAs 將項目啟動為另一種類型。
COleClientItem::AttachDataObject 存取 OLE 物件中的數據。
COleClientItem::CanCreateFromData 指出容器應用程式是否可以建立內嵌物件。
COleClientItem::CanCreateLinkFromData 指出容器應用程式是否可以建立連結的物件。
COleClientItem::CanPaste 指出剪貼簿是否包含可內嵌或靜態 OLE 專案。
COleClientItem::CanPasteLink 指出剪貼簿是否包含可連結的 OLE 專案。
COleClientItem::Close 關閉伺服器的連結,但不會終結 OLE 專案。
COleClientItem::ConvertTo 將項目轉換成另一種類型。
COleClientItem::CopyToClipboard 將 OLE 專案複製到剪貼簿。
COleClientItem::CreateCloneFrom 建立現有項目的複本。
COleClientItem::CreateFromClipboard 從剪貼簿建立內嵌專案。
COleClientItem::CreateFromData 從數據物件建立內嵌專案。
COleClientItem::CreateFromFile 從檔案建立內嵌專案。
COleClientItem::CreateLinkFromClipboard 從剪貼簿建立連結的專案。
COleClientItem::CreateLinkFromData 從數據物件建立連結的專案。
COleClientItem::CreateLinkFromFile 從檔案建立連結的專案。
COleClientItem::CreateNewItem 啟動伺服器應用程式,以建立新的內嵌專案。
COleClientItem::CreateStaticFromClipboard 從剪貼簿建立靜態專案。
COleClientItem::CreateStaticFromData 從數據物件建立靜態專案。
COleClientItem::D eactivate 停用專案。
COleClientItem::D eactivateUI 將容器應用程式的使用者介面還原為其原始狀態。
COleClientItem::D elete 如果 OLE 專案是連結的專案,則刪除或關閉該專案。
COleClientItem::D oDragDrop 執行拖放作業。
COleClientItem::D oVerb 執行指定的動詞。
COleClientItem::D raw 繪製 OLE 專案。
COleClientItem::GetActiveView 取得專案就地啟動的檢視。
COleClientItem::GetCachedExtent 傳回 OLE 專案矩形的界限。
COleClientItem::GetClassID 取得目前項目的類別識別碼。
COleClientItem::GetClipboardData 藉由呼叫 CopyToClipboard 成員函式,取得將放在剪貼簿上的數據。
COleClientItem::GetDocument COleDocument 回包含目前項目的物件。
COleClientItem::GetDrawAspect 取得專案的目前檢視以進行轉譯。
COleClientItem::GetExtent 傳回 OLE 專案矩形的界限。
COleClientItem::GetIconFromRegistry 擷取與特定 CLSID 伺服器相關聯的圖示句柄。
COleClientItem::GetIconicMetafile 取得用於繪製項目圖示的元檔。
COleClientItem::GetInPlaceWindow 傳回專案就地編輯視窗的指標。
COleClientItem::GetItemState 取得專案的目前狀態。
COleClientItem::GetLastStatus 傳回最後一個 OLE 作業的狀態。
COleClientItem::GetLinkUpdateOptions 傳回連結專案的更新模式(進階功能)。
COleClientItem::GetType 傳回 OLE 專案的類型(內嵌、鏈接或靜態)。
COleClientItem::GetUserType 取得描述項目類型的字串。
COleClientItem::IsInPlaceActive 如果專案為就地使用中,則傳回 TRUE。
COleClientItem::IsLinkUpToDate 如果連結的專案與其源文檔為最新狀態,則傳回 TRUE。
COleClientItem::IsModified 如果專案自上次儲存後已修改,則傳回 TRUE。
COleClientItem::IsOpen 如果專案目前在伺服器應用程式中開啟,則傳回 TRUE。
COleClientItem::IsRunning 如果專案的伺服器應用程式正在執行,則傳回 TRUE。
COleClientItem::OnActivate 由架構呼叫,以通知專案已啟動。
COleClientItem::OnActivateUI 由架構呼叫,通知專案已啟動,且應該顯示其使用者介面。
COleClientItem::OnChange 當伺服器變更 OLE 專案時呼叫。 需要實作。
COleClientItem::OnDeactivate 停用專案時由架構呼叫。
COleClientItem::OnDeactivateUI 當伺服器移除就地使用者介面時,由架構呼叫。
COleClientItem::OnGetClipboardData 由架構呼叫,以取得要複製到剪貼簿的數據。
COleClientItem::OnInsertMenus 由架構呼叫以建立複合功能表。
COleClientItem::OnRemoveMenus 由架構呼叫,以從複合功能表中移除容器的功能表。
COleClientItem::OnSetMenu 由架構呼叫以安裝及移除複合功能表。
COleClientItem::OnShowControlBars 由架構呼叫以顯示和隱藏控制列。
COleClientItem::OnUpdateFrameTitle 由架構呼叫以更新框架視窗的標題列。
COleClientItem::ReactivateAndUndo 重新啟用項目並復原最後一個就地編輯作業。
COleClientItem::Release 釋放與 OLE 連結項目的連線,並在開啟時將其關閉。 不會終結客戶端專案。
COleClientItem::Reload 在呼叫 ActivateAs之後重載專案。
COleClientItem::Run 執行與專案相關聯的應用程式。
COleClientItem::SetDrawAspect 設定專案的目前檢視以進行轉譯。
COleClientItem::SetExtent 設定 OLE 專案的周框。
COleClientItem::SetHostNames 設定伺服器編輯 OLE 項目時顯示的名稱。
COleClientItem::SetIconicMetafile 快取用於繪製項目圖示的元檔。
COleClientItem::SetItemRects 設定專案的周框。
COleClientItem::SetLinkUpdateOptions 設定連結專案的更新模式(進階功能)。
COleClientItem::SetPrintDevice 設定此客戶端專案的列印目標裝置。
COleClientItem::UpdateLink 更新項目的簡報快取。

受保護的方法

名稱 描述
COleClientItem::CanActivate 由架構呼叫,以判斷是否允許就地啟用。
COleClientItem::OnChangeItemPosition 架構在專案的位置變更時呼叫。
COleClientItem::OnDeactivateAndUndo 由架構呼叫,以在啟用之後復原。
COleClientItem::OnDiscardUndoState 由架構呼叫以捨棄項目的復原狀態資訊。
COleClientItem::OnGetClipRect 由架構呼叫,以取得專案的裁剪矩形座標。
COleClientItem::OnGetItemPosition 由架構呼叫,以取得專案相對於檢視的位置。
COleClientItem::OnGetWindowContext 當專案就地啟動時,由架構呼叫。
COleClientItem::OnScrollBy 由架構呼叫以將專案捲動至檢視。
COleClientItem::OnShowItem 由架構呼叫以顯示 OLE 專案。

備註

OLE 專案代表伺服器應用程式所建立和維護的數據,它可以「順暢」地併入檔,讓用戶顯示為單一檔。 結果是由 OLE 專案和包含的文件所組成的「複合檔」。

OLE 專案可以是內嵌或連結。 如果內嵌,其數據會儲存為複合檔的一部分。 如果連結,其數據會儲存為伺服器應用程式所建立之個別檔案的一部分,而且只有該檔案的連結會儲存在複合檔中。 所有 OLE 專案都包含指定應該呼叫的伺服器應用程式來編輯它們的資訊。

COleClientItem 定義數個可覆寫的函式,這些函式會回應伺服器應用程式的要求;這些可覆寫專案通常會做為通知。 這可讓伺服器應用程式通知使用者在編輯 OLE 專案時所做的變更,或擷取編輯期間所需的資訊。

COleClientItem可以搭配 COleDocumentCOleLinkingDoc 或 COleServerDoc 類別使用。 若要使用 COleClientItem,請從它衍生類別,並實 作 OnChange 成員函式,此函式會定義容器如何回應對專案所做的變更。 若要支援就地啟用,請覆寫 OnGetItemPosition 成員函式。 此函式提供 OLE 項目顯示位置的相關信息。

如需使用容器介面的詳細資訊,請參閱容器:實作容器啟用一文。

注意

Windows SDK 會將內嵌和連結的專案稱為「物件」,並將專案類型稱為「類別」。此參考會使用 「item」 一詞來區分 OLE 實體與對應的 C++ 物件,以及 「type」 一詞來區分 OLE 類別與C++類別。

繼承階層架構

CObject

CCmdTarget

CDocItem

COleClientItem

需求

標頭: afxole.h

COleClientItem::Activate

呼叫此函式來執行指定的動詞,而不是 DoVerb ,以便在擲回例外狀況時執行自己的處理。

void Activate(
    LONG nVerb,
    CView* pView,
    LPMSG lpMsg = NULL);

參數

nVerb
指定要執行的動詞。 可以是下列其中一項:

意義 符號
0- 主動詞命令 OLEIVERB_PRIMARY
- 1 次要動詞 (無)
- 1 顯示要編輯的專案 OLEIVERB_SHOW
-2 在不同的視窗中編輯專案 OLEIVERB_OPEN
-3 隱藏專案 OLEIVERB_HIDE

-1 值通常是另一個動詞的別名。 如果不支持開啟編輯,-2 的效果與 -1 相同。 如需其他值,請參閱 Windows SDK 中的 IOleObject::D oVerb

pView
包含 OLE 專案的容器檢視視窗指標;伺服器應用程式會使用此項目進行就地啟用。 如果容器不支援就地啟用,此參數應該是 NULL。

lpMsg
導致項目啟動之訊息的指標。

備註

如果使用 Microsoft Foundation Class Library 撰寫伺服器應用程式,此函式會執行對應COleServerItem物件的 OnDoVerb 成員函式。

如果主要動詞是Edit,且 nVerb 參數中指定零,則會啟動伺服器應用程式以允許編輯 OLE 專案。 如果容器應用程式支援就地啟用,則可以就地編輯。 如果容器不支援就地啟用(或指定 Open 動詞命令),伺服器就會在不同的視窗中啟動,而且可以在那裡進行編輯。 一般而言,當容器應用程式的使用者按兩下 OLE 專案時,nVerb 參數中主要動詞命令的值會決定使用者可以採取的動作。 不過,如果伺服器只支援一個動作,則不論 nVerb 參數中指定的值為何,都會採取該動作。

如需詳細資訊,請參閱 Windows SDK 中的 IOleObject::D oVerb

COleClientItem::ActivateAs

使用 OLE 的物件轉換設施來啟動專案,就像它是 clsidNew指定的類型項目一樣。

virtual BOOL ActivateAs(
    LPCTSTR lpszUserType,
    REFCLSID clsidOld,
    REFCLSID clsidNew);

參數

lpszUserType
代表目標使用者類型的字串指標,例如 「Word Document」。。

clsidOld
專案的目前類別識別碼參考。 類別標識元應該代表實際物件的類型,如儲存,除非它是連結。 在此情況下,它應該是連結所參考之專案的CLSID。 COleConvertDialog 會自動提供專案的正確類別標識碼。

clsidNew
目標類別標識碼的參考。

傳回值

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

備註

這會自動由 COleConvertDialog::D oConvert 呼叫。 它通常不會直接呼叫。

COleClientItem::AttachDataObject

呼叫此函式來初始化 COleDataObject ,以存取 OLE 項目中的數據。

void AttachDataObject(COleDataObject& rDataObject) const;

參數

rDataObject
COleDataObject將初始化的對象參考,以允許存取 OLE 項目中的數據。

COleClientItem::CanActivate

當使用者要求就地啟用 OLE 專案時,由架構呼叫;此函式的傳回值會決定是否允許就地啟用。

virtual BOOL CanActivate();

傳回值

如果允許就地啟用,則為非零;否則為 0。

備註

如果容器具有有效的視窗,則預設實作允許就地啟用。 覆寫此函式以實作特殊邏輯來接受或拒絕啟用要求。 例如,如果 OLE 專案太小或目前看不到,則可以拒絕啟用要求。

如需詳細資訊,請參閱 Windows SDK 中的 IOleInPlaceSite::CanInPlaceActivate

COleClientItem::CanCreateFromData

檢查容器應用程式是否可以從指定的 COleDataObject 物件建立內嵌物件。

static BOOL PASCAL CanCreateFromData(const COleDataObject* pDataObject);

參數

pDataObject
要從中建立 OLE 專案之 COleDataObject 物件的指標。

傳回值

如果容器可以從物件建立內嵌物件, COleDataObject 則為非零,否則為0。

備註

類別 COleDataObject 用於數據傳輸,以各種格式從剪貼簿擷取數據、透過拖放,或從內嵌的 OLE 專案擷取數據。

容器可以使用此函式來決定啟用或停用其 [編輯貼上] 和 [編輯貼上特殊] 命令。

如需詳細資訊,請參閱數據對象和數據源(OLE)一文

COleClientItem::CanCreateLinkFromData

檢查容器應用程式是否可以從指定的 COleDataObject 物件建立連結物件。

static BOOL PASCAL CanCreateLinkFromData(const COleDataObject* pDataObject);

參數

pDataObject
要從中建立 OLE 專案之 COleDataObject 物件的指標。

傳回值

如果容器可以從物件建立連結物件 COleDataObject ,則為非零。

備註

類別 COleDataObject 用於數據傳輸,以各種格式從剪貼簿擷取數據、透過拖放,或從內嵌的 OLE 專案擷取數據。

容器可以使用此函式來決定啟用或停用其 [編輯貼上特殊] 和 [編輯貼上連結] 命令。

如需詳細資訊,請參閱數據對象和數據源(OLE)一文

COleClientItem::CanPaste

呼叫此函式以查看是否可以從剪貼簿貼上內嵌的 OLE 專案。

static BOOL PASCAL CanPaste();

傳回值

如果可以從剪貼簿貼上內嵌的 OLE 專案,則為非零;否則為 0。

備註

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

呼叫此函式以查看是否可以從剪貼簿貼上連結的 OLE 專案。

static BOOL PASCAL CanPasteLink();

傳回值

如果可以從剪貼簿貼上連結的 OLE 專案,則為非零;否則為 0。

備註

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

COleClientItem::Close

呼叫此函式,將 OLE 專案的狀態從執行中狀態變更為已載入的狀態,也就是在記憶體中以其處理程式載入,但伺服器未執行。

void Close(OLECLOSE dwCloseOption = OLECLOSE_SAVEIFDIRTY);

參數

dwCloseOption
旗標,指定在何時儲存 OLE 專案回到載入狀態時。 它可以有下列其中一個值:

  • OLECLOSE_SAVEIFDIRTY儲存 OLE 專案。

  • OLECLOSE_NOSAVE不要儲存 OLE 專案。

  • OLECLOSE_PROMPTSAVE提示使用者是否儲存 OLE 專案。

備註

當 OLE 專案未執行時,此函式不會有任何作用。

如需詳細資訊,請參閱 Windows SDK 中的 IOleObject::Close

COleClientItem::COleClientItem

COleClientItem建構 物件,並將它加入至容器檔之文件專案的集合,它只會建構C++物件,而且不會執行任何 OLE 初始化。

COleClientItem(COleDocument* pContainerDoc = NULL);

參數

pContainerDoc
將包含此專案的容器檔的指標。 這可以是任何 COleDocument 衍生專案。

備註

如果您傳遞 NULL 指標,則容器檔不會新增任何專案。 您必須明確呼叫 COleDocument::AddItem

使用 OLE 專案之前,您必須先呼叫下列其中一個建立成員函式:

COleClientItem::ConvertTo

呼叫這個成員函式,將項目轉換成 clsidNew指定的類型。

virtual BOOL ConvertTo(REFCLSID clsidNew);

參數

clsidNew
目標類型的類別識別碼。

傳回值

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

備註

這由 COleConvertDialog 自動呼叫。 不需要直接呼叫它。

COleClientItem::CopyToClipboard

呼叫此函式,將 OLE 專案複製到剪貼簿。

void CopyToClipboard(BOOL bIncludeLink = FALSE);

參數

bIncludeLink
TRUE 是表示 如果應該將連結資訊複製到剪貼簿,允許貼上連結的專案;否則為 FALSE。

備註

一般而言,從 [編輯] 功能表撰寫複製或剪下命令的訊息處理程式時,您會呼叫此函式。 如果您想要實作複製或剪下命令,則必須在容器應用程式中實作專案選取專案。

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

COleClientItem::CreateCloneFrom

呼叫此函式以建立指定之 OLE 項目的複本。

BOOL CreateCloneFrom(const COleClientItem* pSrcItem);

參數

pSrcItem
要複製之 OLE 專案的指標。

傳回值

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

備註

複製與來源專案相同。 您可以使用此函式來支援復原作業。

COleClientItem::CreateFromClipboard

呼叫此函式,從剪貼簿的內容建立內嵌專案。

BOOL CreateFromClipboard(
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

參數

呈現
指定伺服器如何轉譯 OLE 專案的旗標。 如需可能的值,請參閱 Windows SDK 中的 OLERENDER

cfFormat
指定要在建立 OLE 專案時快取的剪貼簿數據格式。

lpFormatEtc
如果譯為OLERENDER_FORMAT或OLERENDER_DRAW,則為 FORMATETC 結構的指標。 只有在您想要指定 cfFormat指定剪貼簿格式以外的其他格式資訊時,才提供此參數的值。 如果您省略此參數,則會針對 結構中的其他 FORMATETC 欄位使用預設值。

傳回值

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

備註

您通常會從 [編輯] 選單上的 [貼上] 命令訊息處理程式呼叫此函式。 (如果 ,架構會啟用 [貼上] 命令CanPaste 成員函式會傳回非零。)

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

COleClientItem::CreateFromData

呼叫此函式以從 COleDataObject 物件建立內嵌專案。

BOOL CreateFromData(
    COleDataObject* pDataObject,
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

參數

pDataObject
要從中建立 OLE 專案之 COleDataObject 物件的指標。

呈現
指定伺服器如何轉譯 OLE 專案的旗標。 如需可能的值,請參閱 Windows SDK 中的 OLERENDER

cfFormat
指定要在建立 OLE 專案時快取的剪貼簿數據格式。

lpFormatEtc
如果譯為OLERENDER_FORMAT或OLERENDER_DRAW,則為 FORMATETC 結構的指標。 只有在您想要指定 cfFormat指定剪貼簿格式以外的其他格式資訊時,才提供此參數的值。 如果您省略此參數,則會針對 結構中的其他 FORMATETC 欄位使用預設值。

傳回值

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

備註

數據傳輸作業,例如從剪貼簿貼上或拖放作業,提供 COleDataObject 包含伺服器應用程式所提供信息的物件。 它通常用於 CView::OnDrop覆寫中。

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

COleClientItem::CreateFromFile

呼叫此函式,從檔案建立內嵌的 OLE 專案。

BOOL CreateFromFile(
    LPCTSTR lpszFileName,
    REFCLSID clsid = CLSID_NULL,
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

參數

lpszFileName
要從中建立 OLE 專案之檔名的指標。

clsid
保留供未來使用。

呈現
指定伺服器如何轉譯 OLE 專案的旗標。 如需可能的值,請參閱 Windows SDK 中的 OLERENDER

cfFormat
指定要在建立 OLE 專案時快取的剪貼簿數據格式。

lpFormatEtc
如果譯為OLERENDER_FORMAT或OLERENDER_DRAW,則為 FORMATETC 結構的指標。 只有在您想要指定 cfFormat指定剪貼簿格式以外的其他格式資訊時,才提供此參數的值。 如果您省略此參數,則會針對 結構中的其他 FORMATETC 欄位使用預設值。

傳回值

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

備註

如果使用者在選取 [從檔案建立] 按鈕時,從 [插入物件] 對話框選擇 [確定],則架構會從 COleInsertDialog::CreateItem 呼叫此函式。

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

COleClientItem::CreateLinkFromClipboard

呼叫此函式,從剪貼簿的內容建立連結專案。

BOOL CreateLinkFromClipboard(
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

參數

呈現
指定伺服器如何轉譯 OLE 專案的旗標。 如需可能的值,請參閱 Windows SDK 中的 OLERENDER

cfFormat
指定要在建立 OLE 專案時快取的剪貼簿數據格式。

lpFormatEtc
如果譯為OLERENDER_FORMAT或OLERENDER_DRAW,則為 FORMATETC 結構的指標。 只有在您想要指定 cfFormat指定剪貼簿格式以外的其他格式資訊時,才提供此參數的值。 如果您省略此參數,則會針對 結構中的其他 FORMATETC 欄位使用預設值。

傳回值

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

備註

您通常會從 [編輯] 選單上的 [貼上連結] 命令訊息處理程式呼叫此函式。 ([貼上連結] 命令是在 預設實 作中啟用如果剪貼簿包含可連結的 OLE 專案,則為 COleDocument

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

COleClientItem::CreateLinkFromData

呼叫此函式,以從 COleDataObject 物件建立連結專案。

BOOL CreateLinkFromData(
    COleDataObject* pDataObject,
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

參數

pDataObject
要從中建立 OLE 專案之 COleDataObject 物件的指標。

呈現
指定伺服器如何轉譯 OLE 專案的旗標。 如需可能的值,請參閱 Windows SDK 中的 OLERENDER

cfFormat
指定要在建立 OLE 專案時快取的剪貼簿數據格式。

lpFormatEtc
如果譯為OLERENDER_FORMAT或OLERENDER_DRAW,則為 FORMATETC 結構的指標。 只有在您想要指定 cfFormat指定剪貼簿格式以外的其他格式資訊時,才提供此參數的值。 如果您省略此參數,則會針對 結構中的其他 FORMATETC 欄位使用預設值。

傳回值

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

備註

當使用者指出應該建立連結時,在卸除作業期間呼叫這個 。 它也可以用來處理 [編輯貼上] 命令。 當已選取 [連結] 選項時,架構會在 COleClientItem::CreateLinkFromClipboard COlePasteSpecialDialog::CreateItem呼叫它。

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

COleClientItem::CreateLinkFromFile

呼叫此函式,從檔案建立連結的 OLE 專案。

BOOL CreateLinkFromFile(
    LPCTSTR lpszFileName,
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

參數

lpszFileName
要從中建立 OLE 專案之檔名的指標。

呈現
指定伺服器如何轉譯 OLE 專案的旗標。 如需可能的值,請參閱 Windows SDK 中的 OLERENDER

cfFormat
指定要在建立 OLE 專案時快取的剪貼簿數據格式。

lpFormatEtc
如果譯為OLERENDER_FORMAT或OLERENDER_DRAW,則為 FORMATETC 結構的指標。 只有在您想要指定 cfFormat指定剪貼簿格式以外的其他格式資訊時,才提供此參數的值。 如果您省略此參數,則會針對 結構中的其他 FORMATETC 欄位使用預設值。

傳回值

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

備註

如果使用者在選取 [從檔案建立] 按鈕並核取 [連結] 複選框時,從 [插入物件] 對話框中選擇 [確定],則架構會呼叫此函式。 它會從 COleInsertDialog::CreateItem 呼叫。

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

COleClientItem::CreateNewItem

呼叫此函式以建立內嵌專案;此函式會啟動可讓使用者建立 OLE 專案的伺服器應用程式。

BOOL CreateNewItem(
    REFCLSID clsid,
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

參數

clsid
可唯一識別要建立之 OLE 專案類型的標識碼。

呈現
指定伺服器如何轉譯 OLE 專案的旗標。 如需可能的值,請參閱 Windows SDK 中的 OLERENDER

cfFormat
指定要在建立 OLE 專案時快取的剪貼簿數據格式。

lpFormatEtc
如果譯為OLERENDER_FORMAT或OLERENDER_DRAW,則為 FORMATETC 結構的指標。 只有在您想要指定 cfFormat指定剪貼簿格式以外的其他格式資訊時,才提供此參數的值。 如果您省略此參數,則會針對 結構中的其他 FORMATETC 欄位使用預設值。

傳回值

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

備註

如果使用者在選取 [建立新] 按鈕時,從 [插入物件] 對話框中選擇 [確定] 時,架構會呼叫此函式。

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

COleClientItem::CreateStaticFromClipboard

呼叫此函式,從剪貼簿的內容建立靜態專案。

BOOL CreateStaticFromClipboard(
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

參數

呈現
指定伺服器如何轉譯 OLE 專案的旗標。 如需可能的值,請參閱 Windows SDK 中的 OLERENDER

cfFormat
指定要在建立 OLE 專案時快取的剪貼簿數據格式。

lpFormatEtc
如果譯為OLERENDER_FORMAT或OLERENDER_DRAW,則為 FORMATETC 結構的指標。 只有在您想要指定 cfFormat指定剪貼簿格式以外的其他格式資訊時,才提供此參數的值。 如果您省略此參數,則會針對 結構中的其他 FORMATETC 欄位使用預設值。

傳回值

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

備註

靜態專案包含簡報數據,但不包含原生數據;因此,它無法編輯。 如果 CreateFromClipboard 成員函式失敗,您通常會呼叫此函式。

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

COleClientItem::CreateStaticFromData

呼叫此函式以從 COleDataObject 物件建立靜態專案。

BOOL CreateStaticFromData(
    COleDataObject* pDataObject,
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

參數

pDataObject
要從中建立 OLE 專案之 COleDataObject 物件的指標。

呈現
指定伺服器如何轉譯 OLE 專案的旗標。 如需可能的值,請參閱 Windows SDK 中的 OLERENDER

cfFormat
指定要在建立 OLE 專案時快取的剪貼簿數據格式。

lpFormatEtc
如果譯為OLERENDER_FORMAT或OLERENDER_DRAW,則為 FORMATETC 結構的指標。 只有在您想要指定 cfFormat指定剪貼簿格式以外的其他格式資訊時,才提供此參數的值。 如果您省略此參數,則會針對 結構中的其他 FORMATETC 欄位使用預設值。

傳回值

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

備註

靜態專案包含簡報數據,但不包含原生數據;因此,無法編輯它。 這基本上與 CreateStaticFromClipboard 相同,不同之處在於靜態專案可以從任意 COleDataObject建立,而不只是從剪貼簿建立。

選取 [靜態] 時,用於 COlePasteSpecialDialog::CreateItem

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

COleClientItem::D eactivate

呼叫此函式以停用 OLE 專案,並釋放任何相關聯的資源。

void Deactivate();

備註

當使用者按兩下專案界限外的工作區上的滑鼠時,通常會停用就地作用中的 OLE 專案。 請注意,停用 OLE 專案將會捨棄其復原狀態,使得無法呼叫 ReactivateAndUndo 成員函式。

如果您的應用程式支持復原,請勿呼叫 Deactivate;請改為呼叫 DeactivateUI

如需詳細資訊,請參閱 Windows SDK 中的 IOleInPlaceObject::InPlaceDeactivate

COleClientItem::D eactivateUI

當使用者停用已就地啟用的專案時,請呼叫此函式。

void DeactivateUI();

備註

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

此函式不會清除項目的復原狀態資訊。 該資訊會保留, 以便稍後使用 ReactivateAndUndo 在伺服器應用程式中執行復原命令,以防在停用項目之後立即選擇容器的復原命令。

如需詳細資訊,請參閱 Windows SDK 中的 IOleInPlaceObject::InPlaceDeactivate

COleClientItem::D elete

呼叫此函式以從容器檔中刪除 OLE 專案。

void Delete(BOOL bAutoDelete = TRUE);

參數

bAutoDelete
指定專案是否要從檔案中移除。

備註

此函式會呼叫 Release 成員函式,進而刪除專案的C++物件,並永久移除檔中的 OLE 專案。 如果內嵌 OLE 專案,則會刪除專案的原生數據。 它一律會關閉執行中的伺服器;因此,如果專案是開啟的連結,此函式就會關閉它。

COleClientItem::D oDragDrop

DoDragDrop呼叫成員函式以執行拖放作業。

DROPEFFECT DoDragDrop(
    LPCRECT lpItemRect,
    CPoint ptOffset,
    BOOL bIncludeLink = FALSE,
    DWORD dwEffects = DROPEFFECT_COPY | DROPEFFECT_MOVE,
    LPCRECT lpRectStartDrag = NULL);

參數

lpItemRect
用戶端座標 (圖元) 畫面上的專案矩形。

ptOffset
lpItemRect 的位移,其中滑鼠位置在拖曳時的位置。

bIncludeLink
如果鏈接資料應該複製到剪貼簿,請將此設定為 TRUE。 如果您的伺服器應用程式不支援連結,請將它設定為 FALSE。

dwEffects
決定拖曳來源在拖曳作業中允許的效果。

lpRectStartDrag
定義拖曳實際開始位置的矩形指標。 如需詳細資訊,請參閱接下來的<備註>一節。

傳回值

DROPEFFECT 值。 如果DROPEFFECT_MOVE,則應該移除原始數據。

備註

拖放作業不會立即啟動。 它會等到滑鼠游標離開 lpRectStartDrag指定的矩形,或直到經過指定的毫秒數為止。 如果 lpRectStartDrag 是 NULL,矩形的大小就是一個圖元。

延遲時間是由登錄機碼設定所指定。 您可以呼叫 CWinApp::WriteProfileStringCWinApp::WriteProfileInt 來變更延遲時間。 如果您未指定延遲時間,則會使用預設值 200 毫秒。 拖曳延遲時間會儲存如下:

  • Windows NT 拖曳延遲時間儲存在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\IniFileMapping\win.ini\Windows\DragDelay 中。

  • Windows 3.x 拖曳延遲時間會儲存在 WIN 中。INI 檔案,位於 [Windows}] 區段底下。

  • Windows 95/98 拖曳延遲時間會儲存在快取版本的 WIN 中。INI.

如需拖曳延遲資訊儲存在登錄或 中之方式的詳細資訊。INI 檔案,請參閱 Windows SDK 中的 WriteProfileString

COleClientItem::D oVerb

呼叫 DoVerb 以執行指定的動詞。

virtual BOOL DoVerb(
    LONG nVerb,
    CView* pView,
    LPMSG lpMsg = NULL);

參數

nVerb
指定要執行的動詞。 它可以包含下列其中一項:

意義 符號
0- 主動詞命令 OLEIVERB_PRIMARY
- 1 次要動詞 (無)
- 1 顯示要編輯的專案 OLEIVERB_SHOW
-2 在不同的視窗中編輯專案 OLEIVERB_OPEN
-3 隱藏專案 OLEIVERB_HIDE

-1 值通常是另一個動詞的別名。 如果不支持開啟編輯,-2 的效果與 -1 相同。 如需其他值,請參閱 Windows SDK 中的 IOleObject::D oVerb

pView
檢視視窗的指標;伺服器會使用此項目進行就地啟用。 如果容器應用程式不允許就地啟用,此參數應該是 NULL。

lpMsg
導致項目啟動之訊息的指標。

傳回值

如果成功執行動詞,則為非零;否則為 0。

備註

此函式會呼叫 Activate 成員函式來執行動詞命令。 它也會攔截例外狀況,並在擲回消息框時向用戶顯示消息框。

如果主要動詞是Edit,且 nVerb 參數中指定零,則會啟動伺服器應用程式以允許編輯 OLE 專案。 如果容器應用程式支援就地啟用,則可以就地編輯。 如果容器不支援就地啟用(或指定 Open 動詞命令),伺服器就會在不同的視窗中啟動,而且可以在那裡進行編輯。 一般而言,當容器應用程式的使用者按兩下 OLE 專案時,nVerb 參數中主要動詞命令的值會決定使用者可以採取的動作。 不過,如果伺服器只支援一個動作,則不論 nVerb 參數中指定的值為何,都會採取該動作。

COleClientItem::D raw

呼叫此函式,以使用指定的裝置內容,將 OLE 專案繪製至指定的周框。

BOOL Draw(
    CDC* pDC,
    LPCRECT lpBounds,
    DVASPECT nDrawAspect = (DVASPECT)-1);

參數

pDC
用於繪製 OLE 專案的 CDC 物件的指標。

lpBounds
CRect 物件或結構的指標,該物件或RECT結構會定義周框,在其中繪製 OLE 專案(以裝置內容決定的邏輯單元中)。

nDrawAspect
指定 OLE 項目的層面,也就是應該如何顯示它。 如果 nDrawAspect 為 -1,則會使用 SetDrawAspect 設定的最後一個層面。 如需此旗標可能值的詳細資訊,請參閱 SetDrawAspect

傳回值

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

備註

函式可以使用 OnDraw 成員COleServerItem函式所建立之 OLE 專案的元檔表示法。

一般而言,您用於 Draw 屏幕顯示,將螢幕裝置內容傳遞為 pDC。 在此情況下,您只需要指定前兩個參數。

lpBounds 參數會識別目標裝置內容中的矩形(相對於其目前的對應模式)。 轉譯可能牽涉到調整圖片,而且容器應用程式可以使用此檢視來強加在顯示檢視與最終列印影像之間縮放的檢視。

如需詳細資訊,請參閱 Windows SDK 中的 IViewObject::D raw

COleClientItem::GetActiveView

傳回專案就地啟動的檢視。

CView* GetActiveView() const;

傳回值

檢視的指標;否則,如果專案未就地啟用,則為 NULL。

COleClientItem::GetCachedExtent

呼叫此函式以擷取 OLE 專案的大小。

BOOL GetCachedExtent(
    LPSIZE lpSize,
    DVASPECT nDrawAspect = (DVASPECT)-1);

參數

lpSize
SIZE將接收大小信息的 結構或 CSize 物件的指標。

nDrawAspect
指定要擷取界限的 OLE 項目層面。 如需可能的值,請參閱 SetDrawAspect

傳回值

如果成功,則為非零;如果 OLE 專案空白,則為 0。

備註

此函式提供與 GetExtent 相同的資訊。 不過,您可以在處理其他 OLE 處理程式期間呼叫 GetCachedExtent 以取得範圍資訊,例如 OnChange。 維度以MM_HIMETRIC單位為單位。

這是可能的,因為 GetCachedExtent 使用 IViewObject2 介面,而不是使用 IOleObject 介面來取得此項目的範圍。 IViewObject2 COM 物件會快取先前對 IViewObject::D raw 呼叫中使用的範圍資訊。

如需詳細資訊,請參閱 Windows SDK 中的 IViewObject2::GetExtent

COleClientItem::GetClassID

將項目的類別識別碼傳回 pClassID 所指向的記憶體。

void GetClassID(CLSID* pClassID) const;

參數

pClassID
要擷取類別標識碼之 CLSID 類型的標識碼指標。 如需 CLSID 的資訊,請參閱 Windows SDK。

備註

類別標識碼是128位的數位,可唯一識別編輯專案的應用程式。

如需詳細資訊,請參閱 Windows SDK 中的 IPersist::GetClassID

COleClientItem::GetClipboardData

呼叫此函式以取得COleDataSource物件,其中包含呼叫 CopyToClipboard 成員函式時,將放置於剪貼簿上的所有數據。

void GetClipboardData(
    COleDataSource* pDataSource,
    BOOL bIncludeLink = FALSE,
    LPPOINT lpOffset = NULL,
    LPSIZE lpSize = NULL);

參數

pDataSource
COleDataSource 物件的指標,該物件將接收 OLE 專案中包含的數據。

bIncludeLink
如果應該包含鏈接數據,則為TRUE;否則為 FALSE。

lpOffset
滑鼠游標的位移,以像素為單位的物件原點。

lpSize
以像素為單位的物件大小。

備註

GetClipboardData稱為 OnGetClipboardData 的預設實作。 只有在您要提供資料格式,以及所提供的CopyToClipboard資料格式時,才覆寫 OnGetClipboardData 。 在呼叫 CopyToClipboard之前或之後,將這些格式放在 物件中COleDataSource,然後將對象傳遞COleDataSourceCOleDataSource::SetClipboard 函式。 例如,如果您希望 OLE 專案在其容器檔中的位置隨附於剪貼簿上,您可以定義自己的格式來傳遞該資訊,並在呼叫 CopyToClipboard之前將它放在 COleDataSource 中。

COleClientItem::GetDocument

呼叫此函式,以取得包含 OLE 專案的文件指標。

COleDocument* GetDocument() const;

傳回值

包含 OLE 專案的文件指標。 如果專案不是檔的一部分,則為 NULL。

備註

此指標可讓您存取 COleDocument 您當做自變數傳遞至 COleClientItem 建構函式的物件。

COleClientItem::GetDrawAspect

GetDrawAspect呼叫成員函式來判斷專案的目前「層面」或檢視。

DVASPECT GetDrawAspect() const;

傳回值

DVASPECT 列舉中的值,其值會列在 SetDrawAspect參考中。

備註

層面會指定如何轉譯專案。

COleClientItem::GetExtent

呼叫此函式以擷取 OLE 專案的大小。

BOOL GetExtent(
    LPSIZE lpSize,
    DVASPECT nDrawAspect = (DVASPECT)- 1);

參數

lpSize
SIZE將接收大小資訊的 結構或 CSize 物件的指標。

nDrawAspect
指定要擷取界限的 OLE 項目層面。 如需可能的值,請參閱 SetDrawAspect

傳回值

如果成功,則為非零;如果 OLE 專案空白,則為 0。

備註

如果使用 Microsoft Foundation Class Library 撰寫伺服器應用程式,此函式會呼叫對應COleServerItem物件的 OnGetExtent 成員函式。 請注意,擷取的大小可能與SetExtent成員函式上次設定的大小不同;所SetExtent指定的大小會被視為建議。 維度以MM_HIMETRIC單位為單位。

注意

請勿在處理 OLE 處理程式期間呼叫 GetExtent ,例如 OnChange。 請改為呼叫 GetCachedExtent

如需詳細資訊,請參閱 Windows SDK 中的 IOleObject::GetExtent

COleClientItem::GetIconFromRegistry

呼叫這個成員函式,以擷取與特定 CLSID 伺服器相關聯的圖示資源句柄。

HICON GetIconFromRegistry() const;

static HICON GetIconFromRegistry(CLSID& clsid);

參數

clsid
與圖示相關聯之伺服器的 CLSID 參考。

傳回值

找不到伺服器圖示或預設圖示時,圖示資源的有效句柄或 NULL。

備註

即使伺服器已經執行,這個成員函式也不會動態啟動伺服器或取得圖示。 相反地,這個成員函式會開啟伺服器的可執行檔映像,並在註冊時擷取與伺服器相關聯的靜態圖示。

COleClientItem::GetIconicMetafile

擷取用於繪製項目圖示的元檔。

HGLOBAL GetIconicMetafile();

傳回值

如果成功,則為元檔句柄;否則為 NULL。

備註

如果沒有目前的圖示,則會傳回預設圖示。 MFC/OLE 對話框會自動呼叫此專案,通常不會直接呼叫。

此函式也會呼叫 SetIconicMetafile 來快取元檔以供稍後使用。

COleClientItem::GetInPlaceWindow

GetInPlaceWindow呼叫成員函式,以取得專案已開啟以進行就地編輯之視窗的指標。

CWnd* GetInPlaceWindow();

傳回值

專案就地編輯視窗的指標;如果專案不是使用中,或其伺服器無法使用,則為 NULL。

備註

只有就地作用中的專案才應該呼叫此函式。

COleClientItem::GetItemState

呼叫此函式以取得 OLE 專案的目前狀態。

UINT GetItemState() const;

傳回值

COleClientItem::ItemState列舉值,可以是下列其中一項:emptyState、、loadedStateopenStateactiveStateactiveUIState。 如需這些狀態的相關信息,請參閱容器:客戶端項目狀態一文

備註

若要在 OLE 專案的狀態變更時收到通知,請使用 OnChange 成員函式。

如需詳細資訊,請參閱容器:客戶端項目狀態一文

COleClientItem::GetLastStatus

傳回最後一個 OLE 作業的狀態代碼。

SCODE GetLastStatus() const;

傳回值

SCODE 值。

備註

對於傳回 FALSE 之 BOOL 值的成員函式,或傳回 NULL 的其他成員函式, GetLastStatus 會傳回更詳細的失敗資訊。 請注意,大部分的 OLE 成員函式會擲回例外狀況,以找出更嚴重的錯誤。 SCODE 解譯的特定資訊取決於上次傳回 SCODE 值的基礎 OLE 呼叫。

如需 SCODE 的詳細資訊,請參閱 Windows SDK 檔中的 COM 錯誤碼 結構。

COleClientItem::GetLinkUpdateOptions

呼叫此函式,以取得 OLE 專案的連結更新選項目前值。

OLEUPDATE GetLinkUpdateOptions();

傳回值

下列其中一個值:

  • OLEUPDATE_ALWAYS盡可能更新連結的專案。 這個選項支援 [連結] 對話框中的 [自動連結更新] 單選按鈕。

  • OLEUPDATE_ONCALL只有在呼叫UpdateLink成員函式時,才在容器應用程式的要求上更新連結的專案。 這個選項支援 [連結] 對話框中的 [手動連結更新] 單選按鈕。

備註

這是進階作業。

COleLinksDialog 類別會自動呼叫此函式。

如需詳細資訊,請參閱 Windows SDK 中的 IOleLink::GetUpdateOptions

COleClientItem::GetType

呼叫此函式,以判斷 OLE 專案是內嵌還是鏈接,還是靜態。

OLE_OBJTYPE GetType() const;

傳回值

具有下列其中一個值的不帶正負號整數:

  • OT_LINK OLE 專案是連結。

  • OT_EMBEDDED OLE 專案已內嵌。

  • OT_STATIC OLE 專案是靜態的,也就是說,它只包含簡報數據,而不是原生數據,因此無法編輯。

COleClientItem::GetUserType

呼叫此函式,以取得描述 OLE 專案類型的用戶可見字串,例如 「Word 檔」。

void GetUserType(
    USERCLASSTYPE nUserClassType,
    CString& rString);

參數

nUserClassType
值,指出描述 OLE 專案型別之字串的所需變體。 這可以有下列其中一個值:

  • USERCLASSTYPE_FULL向用戶顯示的完整類型名稱。

  • USERCLASSTYPE_SHORT在快捷功能表和 [編輯連結] 對話框中使用的簡短名稱 (最多 15 個字元)。

  • USERCLASSTYPE_APPNAME服務 類別的應用程式名稱。

rString
描述 OLE 專案型別的字串要傳回之 CString 物件的參考

備註

這通常是系統註冊資料庫中的專案。

如果要求完整類型名稱但無法使用,則會改用簡短名稱。 如果在註冊資料庫中找不到 OLE 專案類型的專案,或者如果沒有針對 OLE 專案類型註冊的使用者類型,則會使用目前儲存在 OLE 專案中的使用者類型。 如果該使用者類型名稱是空字串,則會使用 「Unknown Object」。。

如需詳細資訊,請參閱 Windows SDK 中的 IOleObject::GetUserType

COleClientItem::IsInPlaceActive

呼叫此函式以查看 OLE 專案是否為就地作用中。

BOOL IsInPlaceActive() const;

傳回值

如果 OLE 專案就地作用中,則為非零;否則為 0。

備註

根據專案是否已就地編輯,執行不同的邏輯很常見。 函式會檢查目前的項目狀態是否等於 activeStateactiveUIState

COleClientItem::IsLinkUpToDate

呼叫此函式以查看 OLE 專案是否為最新狀態。

BOOL IsLinkUpToDate() const;

傳回值

如果 OLE 專案是最新的,則為非零;否則為 0。

備註

如果已更新其源文檔,則連結的專案可能已過期。 內嵌專案,內含連結的內嵌專案可能會類似過期。 函式會執行 OLE 專案的遞歸檢查。 請注意,判斷 OLE 專案是否過期可能和實際執行更新一樣昂貴。

這由 COleLinksDialog 實作自動呼叫。

如需詳細資訊,請參閱 Windows SDK 中的 IOleObject::IsUpToDate

COleClientItem::IsModified

呼叫此函式以查看 OLE 專案是否為骯髒專案(自上次儲存後已修改)。

BOOL IsModified() const;

傳回值

如果 OLE 專案已變更,則為非零;否則為 0。

備註

如需詳細資訊,請參閱 Windows SDK 中的 IPersistStorage::IsDirty

COleClientItem::IsOpen

呼叫此函式以查看 OLE 專案是否開啟;也就是說,在個別視窗中執行的伺服器應用程式實例中開啟。

BOOL IsOpen() const;

傳回值

如果 OLE 專案已開啟,則為非零;否則為 0。

備註

它用來判斷何時使用影線圖樣繪製物件。 開啟的對象應該在物件上方繪製影線圖樣。 您可以使用 CRectTracker 物件來完成這項作業。

COleClientItem::IsRunning

呼叫此函式以查看 OLE 專案是否正在執行;也就是說,專案是否在伺服器應用程式中載入並執行。

BOOL IsRunning() const;

傳回值

如果 OLE 專案正在執行,則為非零;否則為 0。

備註

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

COleClientItem::OnActivate

由架構呼叫,以通知專案它剛啟動到位。

virtual void OnActivate();

備註

請注意,呼叫此函式來指出伺服器正在執行,而不是表示其使用者介面已安裝在容器應用程式中。 此時,對象沒有作用中的使用者介面(不是 activeUIState)。 它尚未安裝其功能表或工具列。 發生此情況時,會呼叫 OnActivateUI 成員函式。

默認實作會呼叫 OnChange 成員函式,並使用 OLE_CHANGEDSTATE 做為參數。 覆寫此函式,以在專案變成就地使用中時執行自定義處理。

COleClientItem::OnActivateUI

架構會在對象進入使用中 UI 狀態時呼叫 OnActivateUI

virtual void OnActivateUI();

備註

對象現在已安裝其工具列和功能表。

默認實作會記住伺服器的 HWND 以供稍後 GetServerWindow 呼叫。

COleClientItem::OnChange

當使用者修改、儲存或關閉 OLE 專案時,由架構呼叫。

virtual void OnChange(
    OLE_NOTIFICATION nCode,
    DWORD dwParam);

參數

nCode
伺服器變更此專案的原因。 它可以有下列其中一個值:

  • OLE_CHANGED OLE 項目的外觀已變更。

  • OLE_SAVED已儲存 OLE 專案。

  • OLE_CLOSED OLE 專案已關閉。

  • OLE_CHANGED_STATE OLE 專案已從某個狀態變更為另一個狀態。

dwParam
如果 nCode 是OLE_SAVED或OLE_CLOSED,則不會使用此參數。 如果 nCode 是OLE_CHANGED,此參數會指定已變更的 OLE 項目層面。 如需可能的值,請參閱 COleClientItem::D rawdwParam 參數。 如果 nCode 是OLE_CHANGED_STATE,則此參數是 COleClientItem::ItemState 列舉值,並描述所輸入的狀態。 它可以有下列其中一個值: emptyStateloadedStateopenStateactiveStateactiveUIState

備註

(如果使用 Microsoft Foundation Class Library 撰寫伺服器應用程式,則會呼叫此函式以回應 NotifyCOleServerItem的成員函COleServerDoc式。如果 nCode 是OLE_CHANGED或OLE_SAVED,則預設實作會將容器文件標示為已修改。

針對OLE_CHANGED_STATE,從 GetItemState 傳回的目前狀態仍會是舊狀態,這表示此狀態變更之前目前的狀態。

覆寫此函式以回應 OLE 項目狀態的變更。 一般而言,您會藉由使項目顯示所在的區域失效,來更新項目的外觀。 在覆寫開頭呼叫基類實作。

COleClientItem::OnChangeItemPosition

由架構呼叫,以通知容器 OLE 專案的範圍已在就地啟用期間變更。

virtual BOOL OnChangeItemPosition(const CRect& rectPos);

參數

rectPos
指出專案相對於容器應用程式工作區的位置。

傳回值

如果專案的位置成功變更,則為非零;否則為 0。

備註

默認實作會決定 OLE 專案的新可見矩形,並使用新的值呼叫 SetItemRects 。 默認實作會計算項目的可見矩形,並將該資訊傳遞至伺服器。

覆寫此函式,將特殊規則套用至重設大小/移動作業。 如果應用程式是以 MFC 撰寫,此呼叫會產生,因為伺服器稱為 COleServerDoc::RequestPositionChange

COleClientItem::OnDeactivate

當 OLE 專案從就地使用中狀態 ( activeState) 轉換為載入狀態時,由架構呼叫,這表示會在就地啟用之後停用它。

virtual void OnDeactivate();

備註

請注意,呼叫此函式以指出 OLE 專案已關閉,而不是已從容器應用程式移除其使用者介面。 發生這種情況時, 會呼叫 OnDeactivateUI 成員函式。

默認實作會呼叫 OnChange 成員函式,並使用 OLE_CHANGEDSTATE 做為參數。 覆寫此函式,以在停用就地使用中項目時執行自定義處理。 例如,如果您在容器應用程式中支援復原命令,則可以覆寫此函式來捨棄復原狀態,指出停用專案后,無法在 OLE 專案上執行的最後一項作業復原。

COleClientItem::OnDeactivateAndUndo

當用戶在啟動 OLE 項目之後叫用復原命令時,由架構呼叫。

virtual void OnDeactivateAndUndo();

備註

默認實作會呼叫 DeactivateUI 來停用伺服器的使用者介面。 如果您要在容器應用程式中實作復原命令,請覆寫此函式。 在您的覆寫中,呼叫 函式的基類版本,然後復原應用程式中執行的最後一個命令。

如需詳細資訊,請參閱 Windows SDK 中的 IOleInPlaceSite::D eactivateAndUndo

COleClientItem::OnDeactivateUI

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

virtual void OnDeactivateUI(BOOL bUndoable);

參數

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

備註

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

如果 bUndoable 為 FALSE,容器應該停用復原命令,實際上會捨棄容器的復原狀態,因為它表示伺服器執行的最後一個作業無法復原。

COleClientItem::OnDiscardUndoState

當使用者在編輯 OLE 專案時執行會捨棄復原狀態的動作時,由架構呼叫。

virtual void OnDiscardUndoState();

備註

預設實作不做任何動作。 如果您要在容器應用程式中實作復原命令,請覆寫此函式。 在您的覆寫中,捨棄容器應用程式的復原狀態。

如果伺服器是以 Microsoft Foundation Class Library 撰寫的,伺服器可能會呼叫 COleServerDoc::D iscardUndoState 來呼叫此函式。

如需詳細資訊,請參閱 Windows SDK 中的 IOleInPlaceSite::D iscardUndoState

COleClientItem::OnGetClipboardData

由架構呼叫,以取得COleDataSource物件,其中包含呼叫 CopyToClipboardDoDragDrop 成員函式,將放在剪貼簿上的所有數據。

virtual COleDataSource* OnGetClipboardData(
    BOOL bIncludeLink,
    LPPOINT lpOffset,
    LPSIZE lpSize);

參數

bIncludeLink
如果應該將連結數據複製到剪貼簿,請將此設定為TRUE。 如果您的伺服器應用程式不支援連結,請將此設定為 FALSE。

lpOffset
滑鼠游標從以像素為單位之物件原點的位移指標。

lpSize
以像素為單位的物件大小的指標。

傳回值

包含剪貼簿數據的 COleDataSource 物件的指標

備註

此函式的預設實作會呼叫 GetClipboardData

COleClientItem::OnGetClipRect

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

virtual void OnGetClipRect(CRect& rClipRect);

參數

rClipRect
將保存專案裁剪矩形座標之 CRect 類別物件的指標。

備註

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

默認實作只會傳回專案就地使用中檢視的用戶端矩形。

COleClientItem::OnGetItemPosition

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

virtual void OnGetItemPosition(CRect& rPosition);

參數

rPosition
將包含專案位置座標的 CRect 物件的參考。

備註

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

此函式的預設實作不做任何動作。 支援就地編輯的應用程式需要其實作。

COleClientItem::OnGetWindowContext

當專案就地啟動時,由架構呼叫。

virtual BOOL OnGetWindowContext(
    CFrameWnd** ppMainFrame,
    CFrameWnd** ppDocFrame,
    LPOLEINPLACEFRAMEINFO lpFrameInfo);

參數

ppMainFrame
主框架視窗指標的指標。

ppDocFrame
指向文檔框架視窗指標的指標。

lpFrameInfo
將接收框架視窗資訊的 OLEINPLACEFRAMEINFO 結構的指標。

傳回值

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

備註

此函式用來擷取 OLE 專案父視窗的相關信息。

如果容器是 MDI 應用程式,則預設實作會傳回 ppMainFrame 中 CMDIFrameWnd 物件的指標,以及 ppDocFrame 中作用CMDIChildWnd 物件的指標。 如果容器是 SDI 應用程式,則預設實作會傳回 ppMainFrame 中 CFrameWnd 物件的指標,並在 ppDocFrame傳回 NULL。 默認實作也會填入 lpFrameInfo 的成員

只有在默認實作不符合您的應用程式時,才覆寫此函式;例如,如果您的應用程式具有與 SDI 或 MDI 不同的使用者介面範例。 這是可覆寫的進階。

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

COleClientItem::OnInsertMenus

在就地啟用期間由架構呼叫,以將容器應用程式的功能表插入空白菜單中。

virtual void OnInsertMenus(
    CMenu* pMenuShared,
    LPOLEMENUGROUPWIDTHS lpMenuWidths);

參數

pMenuShared
指向空白菜單。

lpMenuWidths
指向六個 LONG 值的陣列,指出下列每個功能表群組中有多少個功能表:檔案、編輯、容器、物件、視窗、說明。 容器應用程式負責檔案、容器和視窗功能表群組,其對應至此陣列的元素0、2和4。

備註

接著,此功能表會傳遞至伺服器,以插入自己的功能表,建立複合功能表。 您可以重複呼叫此函式,以建置數個複合功能表。

默認實作會 插入 pMenuShared 就地容器功能表;也就是 [檔案]、[容器] 和 [視窗] 功能表群組。 CDocTemplate::SetContainerInfo 可用來設定此功能表資源。 默認實作也會根據功能表資源,將適當的值指派給 lpMenuWidths 中的元素 0、2 和 4。 如果預設實作不適合您的應用程式,請覆寫此函式;例如,如果您的應用程式不使用檔範本來將資源與檔案類型產生關聯。 如果您覆寫此函式,也應該覆寫 OnSetMenuOnRemoveMenus。 這是可覆寫的進階。

如需詳細資訊,請參閱 Windows SDK 中的 IOleInPlaceFrame::InsertMenus

COleClientItem::OnRemoveMenus

由架構呼叫,以在就地啟用結束時,從指定的複合功能表移除容器的功能表。

virtual void OnRemoveMenus(CMenu* pMenuShared);

參數

pMenuShared
指向透過呼叫 OnInsertMenus 成員函式所建構的複合功能表。

備註

默認實作會從 pMenuShared 就地容器功能表移除,也就是 [檔案]、[容器] 和 [視窗] 功能表群組。 如果預設實作不適合您的應用程式,請覆寫此函式;例如,如果您的應用程式不使用檔範本來將資源與檔案類型產生關聯。 如果您覆寫此函式,您可能也應該覆寫 OnInsertMenusOnSetMenu 。 這是可覆寫的進階。

如果伺服器重複呼叫 OnInsertMenus,pMenuShared 上的子功能表可能會由多個複合功能表共用。 因此,您不應該刪除 覆寫 OnRemoveMenus中的任何子程式;您應該只將它們中斷連結。

如需詳細資訊,請參閱 Windows SDK 中的 IOleInPlaceFrame::RemoveMenus

COleClientItem::OnScrollBy

架構呼叫以捲動 OLE 專案,以回應來自伺服器的要求。

virtual BOOL OnScrollBy(CSize sizeExtent);

參數

sizeExtent
指定以像素為單位的距離,以 x 和 y 方向捲動。

傳回值

如果專案已捲動,則為非零;如果無法捲動專案,則為 0。

備註

例如,如果 OLE 專案部分可見,且使用者在執行就地編輯時移動超出可見區域,則會呼叫此函式來讓游標保持可見。 預設實作不做任何動作。 覆寫此函式,以依指定的數量捲動專案。 請注意,由於捲動,OLE 項目的可見部分可能會變更。 呼叫 SetItemRects 以更新項目的可見矩形。

如需詳細資訊,請參閱 Windows SDK 中的 IOleInPlaceSite::Scroll

COleClientItem::OnSetMenu

當就地啟用開始和結束時,架構會呼叫兩次;第一次安裝複合功能表和第二次 (與 holemenu 等於 NULL) 移除它。

virtual void OnSetMenu(
    CMenu* pMenuShared,
    HOLEMENU holemenu,
    HWND hwndActiveObject);

參數

pMenuShared
呼叫 OnInsertMenus 成員函式和函式所建構之複合功能表的 InsertMenu 指標。

holemenu
處理函式傳 OleCreateMenuDescriptor 回的功能表描述元,如果要移除分派程序代碼,則為NULL。

hwndActiveObject
OLE 專案的編輯視窗句柄。 這是從 OLE 接收編輯命令的視窗。

備註

默認實作會安裝或移除複合功能表,然後呼叫 OleSetMenuDescriptor 函式來安裝或移除分派程序代碼。 如果預設實作不適合您的應用程式,請覆寫此函式。 如果您覆寫此函式,您可能也應該覆寫 OnInsertMenusOnRemoveMenus 。 這是可覆寫的進階。

如需詳細資訊,請參閱 Windows SDK 中的 OleCreateMenuDescriptorOleSetMenuDescriptorIOleInPlaceFrame::SetMenu

COleClientItem::OnShowControlBars

由架構呼叫以顯示和隱藏容器應用程式的控制列。

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

參數

pFrameWnd
容器應用程式的框架視窗指標。 這可以是主框架視窗或 MDI 子視窗。

bShow
指定控件列是要顯示還是隱藏。

傳回值

如果函數調用造成控制列狀態變更,則為非零;如果呼叫沒有變更,或 pFrameWnd 未指向容器的框架視窗,則為 0。

備註

如果控制列已經處於 bShow 所 指定的狀態,則此函式會傳回 0。 例如,如果隱藏控制列且 bShow 為 FALSE,就會發生這種情況。

默認實作會從最上層框架窗口移除工具列。

COleClientItem::OnShowItem

由架構呼叫以顯示 OLE 專案,使其在編輯期間完全可見。

virtual void OnShowItem();

備註

當您的容器應用程式支援內嵌項目的連結時,會使用它(也就是說,如果您已從 COleLinkingDoc 衍生檔案類別)。 此函式會在就地啟用期間呼叫,或當 OLE 專案是連結來源,且使用者想要編輯它時。 默認實作會啟動容器檔上的第一個檢視。 覆寫此函式以捲動檔,讓 OLE 項目可見。

COleClientItem::OnUpdateFrameTitle

在就地啟用期間由架構呼叫,以更新框架視窗的標題列。

virtual BOOL OnUpdateFrameTitle();

傳回值

如果此函式成功更新框架標題,則為非零,否則為零。

備註

默認實作不會變更框架窗口標題。 如果您想要為應用程式提供不同的框架標題,請覆寫此函式,例如“docname 中的伺服器應用程式 - 專案”(如「Microsoft Excel - REPORT.DOC中的電子表格」)。 這是可覆寫的進階。

COleClientItem::ReactivateAndUndo

呼叫此函式以重新啟用 OLE 專案,並在就地編輯期間復原使用者執行的最後一項作業。

BOOL ReactivateAndUndo();

傳回值

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

備註

如果您的容器應用程式支援復原命令,如果使用者在停用 OLE 專案後立即選擇複原命令,請呼叫此函式。

如果伺服器應用程式是以 Microsoft Foundation Class Libraries 撰寫,此函式會讓伺服器呼叫 COleServerDoc::OnReactivateAndUndo

如需詳細資訊,請參閱 Windows SDK 中的 IOleInPlaceObject::ReactivateAndUndo

COleClientItem::Release

呼叫此函式以清除 OLE 專案所使用的資源。

virtual void Release(OLECLOSE dwCloseOption = OLECLOSE_NOSAVE);

參數

dwCloseOption
旗標,指定在何時儲存 OLE 專案回到載入狀態時。 如需可能值的清單,請參閱 COleClientItem::Close

備註

ReleaseCOleClientItem 解構函式呼叫。

如需詳細資訊,請參閱 Windows SDK 中的 IUnknown::Release

COleClientItem::Reload

關閉並重載專案。

BOOL Reload();

傳回值

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

備註

Reload藉由呼叫 ActivateAs,將項目啟動為另一種類型的項目之後呼叫 函式。

COleClientItem::Run

執行與此專案相關聯的應用程式。

void Run();

備註

Run呼叫成員函式以在啟動專案之前啟動伺服器應用程式。 這會由 ActivateDoVerb 自動完成,因此通常不需要呼叫此函式。 如果需要執行伺服器,才能在執行 DoVerb 之前設定項目屬性,例如 SetExtent,請呼叫此函式。

COleClientItem::SetDrawAspect

SetDrawAspect呼叫成員函式來設定專案的「層面」或檢視。

virtual void SetDrawAspect(DVASPECT nDrawAspect);

參數

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

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

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

  • DVASPECT_ICON Item 是由圖示表示。

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

備註

層面會指定使用該函式 nDrawAspect 自變數的預設值時,Draw 如何轉譯專案。

變更圖示會自動呼叫此函式(以及直接呼叫 [變更圖示] 對話方塊的其他對話框),以在使用者要求時啟用圖示顯示層面。

COleClientItem::SetExtent

呼叫此函式以指定 OLE 專案可用的空間量。

void SetExtent(
    const CSize& size,
    DVASPECT nDrawAspect = DVASPECT_CONTENT);

參數

size
包含大小資訊的 CSize 物件。

nDrawAspect
指定要設定界限的 OLE 項目層面。 如需可能的值,請參閱 SetDrawAspect

備註

如果使用 Microsoft Foundation Class Library 撰寫伺服器應用程式,這會導致呼叫對應COleServerItem物件的 OnSetExtent 成員函式。 然後,OLE 專案可以據以調整其顯示。 維度必須以MM_HIMETRIC單位為單位。 當用戶調整 OLE 專案的大小,或支援某種形式的版面配置交涉時,呼叫此函式。

如需詳細資訊,請參閱 Windows SDK 中的 IOleObject::SetExtent

COleClientItem::SetHostNames

呼叫此函式,以指定容器應用程式的名稱,以及內嵌 OLE 專案之容器的名稱。

void SetHostNames(
    LPCTSTR lpszHost,
    LPCTSTR lpszHostObj);

參數

lpszHost
容器應用程式用戶可見名稱的指標。

lpszHostObj
包含 OLE 專案之容器之識別字串的指標。

備註

如果使用 Microsoft Foundation Class Library 撰寫伺服器應用程式,此函式會呼叫 包含 OLE 專案之檔的 OnSetHostNames 成員函 COleServerDoc 式。 編輯 OLE 專案時,會在視窗標題中使用這項資訊。 每次載入容器檔時,架構都會針對檔中的所有 OLE 專案呼叫此函式。 SetHostNames 僅適用於內嵌專案。 每次啟動內嵌的 OLE 專案進行編輯時,就不需要呼叫此函式。

載入物件時,或以不同名稱儲存盤案時,以應用程式名稱和檔名稱自動呼叫。 因此,通常不需要直接呼叫此函式。

如需詳細資訊,請參閱 Windows SDK 中的 IOleObject::SetHostNames

COleClientItem::SetIconicMetafile

快取用於繪製項目圖示的元檔。

BOOL SetIconicMetafile(HGLOBAL hMetaPict);

參數

hMetaPict
用於繪製項目圖示之元檔句柄。

傳回值

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

備註

使用 GetIconicMetafile 來擷取元檔。

hMetaPict 參數會複製到專案中;因此,呼叫端必須釋放 hMetaPict

COleClientItem::SetItemRects

呼叫此函式來設定周框或 OLE 項目的可見矩形。

BOOL SetItemRects(
    LPCRECT lpPosRect = NULL,
    LPCRECT lpClipRect = NULL);

參數

lprcPosRect
矩形的指標,其中包含相對於其父視窗的 OLE 專案界限,在用戶端座標中。

lprcClipRect
矩形的指標,包含 OLE 專案相對於其父視窗的可見部分界限,在用戶端座標中。

傳回值

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

備註

此函式是由 OnChangeItemPosition 成員函式的預設實作所呼叫。 每當 OLE 專案的位置或可見部分變更時,您應該呼叫此函式。 這通常表示您從檢視的 OnSizeOnScrollBy 成員函式呼叫它。

如需詳細資訊,請參閱 Windows SDK 中的 IOleInPlaceObject::SetObjectRects

COleClientItem::SetLinkUpdateOptions

呼叫此函式來設定指定連結專案的呈現連結更新選項。

void SetLinkUpdateOptions(OLEUPDATE dwUpdateOpt);

參數

dwUpdateOpt
這個項目的連結更新選項值。 此值必須是下列其中一項:

  • OLEUPDATE_ALWAYS盡可能更新連結的專案。 這個選項支援 [連結] 對話框中的 [自動連結更新] 單選按鈕。

  • OLEUPDATE_ONCALL只有在呼叫UpdateLink成員函式時,才在容器應用程式的要求上更新連結的專案。 這個選項支援 [連結] 對話框中的 [手動連結更新] 單選按鈕。

備註

一般而言,您不應該在 [連結] 對話框中變更用戶選擇的更新選項。

如需詳細資訊,請參閱 Windows SDK 中的 IOleLink::SetUpdateOptions

COleClientItem::SetPrintDevice

呼叫此函式以變更此專案的列印目標裝置。

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

參數

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

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

傳回值

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

備註

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

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

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

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

呼叫此函式,立即更新 OLE 專案的呈現數據。

BOOL UpdateLink();

傳回值

非零成功,否則為 0。

備註

對於連結的專案,函式會尋找連結來源,以取得 OLE 專案的新簡報。 此程式可能牽涉到執行一或多個伺服器應用程式,這可能會很耗時。 針對內嵌專案,函式會以遞歸方式運作,檢查內嵌專案是否包含可能過期的連結,並加以更新。 使用者也可以使用 [連結] 對話框手動更新個別連結。

如需詳細資訊,請參閱 Windows SDK 中的 IOleLink::Update

另請參閱

MFC 範例 MFCBIND
MFC 範例 OCLIENT
CDocItem 類別
階層架構圖表
COleServerItem 類別