共用方式為


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可以搭配 COleDocument COleLinkingDoc 或 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 中的 OleGetClipboard OleQueryCreateFromData

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

static BOOL PASCAL CanPasteLink();

傳回值

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

備註

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

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 中的 OLERENDER FORMATETC

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 中的 OleCreateFromData OLERENDER FORMATETC

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 中的 OleCreateFromFile OLERENDER FORMATETC

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 中的 OLERENDER FORMATETC

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 中的 OleCreateLinkFromData OLERENDER FORMATETC

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 中的 OleCreateLinkToFile OLERENDER FORMATETC

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 中的 OleCreate OLERENDER FORMATETC

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 中的 OLERENDER FORMATETC

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 中的 OleCreateStaticFromData OLERENDER FORMATETC

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::WriteProfileString CWinApp::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 介面來取得此專案的範圍。 IViewObject2COM 物件會快取先前對 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 ,然後將物件傳遞 COleDataSource COleDataSource::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 中的 IPersist儲存體::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 raw dwParam 參數。 如果 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 物件,其中包含呼叫 CopyToClipboard DoDragDrop 成員函式,將放在剪貼簿 上的所有資料。

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::GetWindowCoNtext OLEINPLACEFRAMEINFO 結構。

COleClientItem::OnInsertMenus

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

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

參數

pMenuShared
指向空白功能表。

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

備註

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

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

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

COleClientItem::OnRemoveMenus

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

virtual void OnRemoveMenus(CMenu* pMenuShared);

參數

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

備註

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

如果伺服器重複呼叫 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 函式來安裝或移除分派程式碼。 如果預設實作不適合您的應用程式,請覆寫此函式。 如果您覆寫此函式,您可能也應該覆寫 OnInsertMenus OnRemoveMenus 。 這是可覆寫的進階。

如需詳細資訊,請參閱 Windows SDK 中的 OleCreateMenuDescriptor OleSetMenuDescriptor IOleInPlaceFrame::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 中的 伺服器應用程式 - 專案 」(如在 REPORT.DOC 中為 「Microsoft Excel - 試算表」)。 這是可覆寫的進階。

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呼叫成員函式以在啟動專案之前啟動伺服器應用程式。 這會由 Activate DoVerb 自動完成,因此通常不需要呼叫此函式。 如果需要執行伺服器,才能在執行 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 專案的位置或可見部分變更時,您應該呼叫此函式。 這通常表示您從檢視的 OnSize OnScrollBy 成員函式呼叫它。

如需詳細資訊,請參閱 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_pdCPrintDialog 物件的成員 PRINTDLG 結構。

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

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

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

BOOL UpdateLink();

傳回值

非零成功,否則為 0。

備註

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

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

另請參閱

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