COleServerItem 類別
提供 OLE 項目的伺服器介面。
語法
class COleServerItem : public CDocItem
成員
受保護的建構函式
名稱 | 描述 |
---|---|
COleServerItem::COleServerItem | 建構 COleServerItem 物件。 |
公用方法
受保護的方法
名稱 | 描述 |
---|---|
COleServerItem::GetDataSource | 取得用來儲存轉換格式的物件。 |
COleServerItem::OnHide | 由架構呼叫以隱藏 OLE 專案。 |
COleServerItem::OnOpen | 由架構呼叫,以在自己的最上層視窗中顯示 OLE 專案。 |
COleServerItem::OnShow | 當容器要求顯示專案時呼叫。 |
公用資料成員
名稱 | 描述 |
---|---|
COleServerItem::m_sizeExtent | 通知伺服器 OLE 專案有多少可見。 |
備註
連結的專案可以代表部分或所有伺服器檔。 內嵌專案一律代表整個伺服器檔。
類別 COleServerItem
會定義數個可覆寫的成員函式,這些函式是由 OLE 系統動態連結程式庫 (DLL) 所呼叫,通常是為了回應來自容器應用程式的要求。 這些成員函式可讓容器應用程式以各種方式間接操作專案,例如顯示專案、執行動詞或以各種格式擷取其資料。
若要使用 COleServerItem
,請從它衍生類別,並實 作 OnDraw 和 Serialize 成員函式 。 函 OnDraw
式會提供專案的中繼檔標記法,以便在容器應用程式開啟複合檔案時顯示該專案。 的 函 Serialize
CObject
式會提供專案的原生標記法,允許在伺服器和容器應用程式之間傳輸內嵌專案。 OnGetExtent 會將專案的自然大小提供給容器,讓容器能夠調整專案的大小。
如需伺服器和相關主題的詳細資訊,請參閱<容器:進階功能 >一文 中的<伺服器:實作伺服器 >和<建立容器/伺服器應用程式>一文 。
繼承階層架構
COleServerItem
需求
標頭: afxole.h
COleServerItem::AddOtherClipboardData
呼叫此函式,將 OLE 專案的簡報和轉換格式放在指定的 COleDataSource
物件中。
void AddOtherClipboardData(COleDataSource* pDataSource);
參數
pDataSource
COleDataSource
要放置資料之物件的指標。
備註
您必須實 作 OnDraw 成員函式,才能提供專案的簡報格式(中繼檔圖片)。 若要支援其他轉換格式,請使用 GetDataSource 所傳回的 COleDataSource 物件進行註冊,並覆寫 OnRenderData 成員函式,以您想要支援的格式提供資料。
COleServerItem::COleServerItem
COleServerItem
建構 物件,並將它加入至伺服器檔的檔專案集合。
COleServerItem(
COleServerDoc* pServerDoc,
BOOL bAutoDelete);
參數
pServerDoc
將包含新專案的檔的指標。
bAutoDelete
旗標,指出當發行物件的連結時,是否可以刪除物件。 如果 COleServerItem
物件是檔資料中必須刪除的整數部分,請將此設定為 FALSE。 如果物件是用來識別檔資料中可由架構刪除的範圍,請將此物件設定為 TRUE。
COleServerItem::CopyToClipboard
呼叫此函式,將 OLE 專案複製到剪貼簿。
void CopyToClipboard(BOOL bIncludeLink = FALSE);
參數
bIncludeLink
如果應該將連結資料複製到剪貼簿,請將此設定為 TRUE。 如果您的伺服器應用程式不支援連結,請將此設定為 FALSE。
備註
函式會使用 OnGetClipboardData 成員函式來建立 COleDataSource 物件,其中包含所支援格式的 OLE 專案資料。 然後,函式會使用 COleDataSource::SetClipboard 函式,將物件放在 COleDataSource
剪貼簿上。 COleDataSource
物件包含專案的原生資料及其以CF_METAFILEPICT格式表示,以及您選擇的任何轉換格式資料。 您必須已實 作 Serialize 和 OnDraw ,此成員函式才能運作。
COleServerItem::D oDragDrop
DoDragDrop
呼叫成員函式以執行拖放作業。
DROPEFFECT DoDragDrop(
LPCRECT lpRectItem,
CPoint ptOffset,
BOOL bIncludeLink = FALSE,
DWORD dwEffects = DROPEFFECT_COPY | DROPEFFECT_MOVE,
LPCRECT lpRectStartDrag = NULL);
參數
lpRectItem
螢幕上的專案矩形,以圖元為單位,相對於工作區。
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 。
COleServerItem::GetClipboardData
呼叫此函式,以填入指定的 COleDataSource 物件,如果您呼叫 CopyToClipboard ,則會將複製到剪貼簿的所有資料填入 (如果您呼叫 DoDragDrop ,也會傳輸相同的資料)。
void GetClipboardData(
COleDataSource* pDataSource,
BOOL bIncludeLink = FALSE,
LPPOINT lpOffset = NULL,
LPSIZE lpSize = NULL);
參數
pDataSource
物件指標, COleDataSource
該物件將接收所有支援格式的 OLE 專案資料。
bIncludeLink
如果應該將連結資料複製到剪貼簿,則為 TRUE。 如果伺服器應用程式不支援連結,則為 FALSE。
lpOffset
滑鼠游標的位移,以圖元為單位,從物件的原點移。
lpSize
以圖元為單位的物件大小。
備註
此函式會呼叫 GetEmbedSourceData 成員函式來取得 OLE 專案的原生資料,並呼叫 AddOtherClipboardData 成員函式來取得簡報格式和任何支援的轉換格式。 如果 bIncludeLink 為 TRUE,函式也會呼叫 GetLinkSourceData 來取得專案的連結資料。
如果您想要在 所提供的 CopyToClipboard
格式之前或之後,將格式放在 物件中 COleDataSource
,請覆寫此函式。
COleServerItem::GetDataSource
呼叫此函式以取得 COleDataSource 物件,以用來儲存伺服器應用程式支援的轉換格式。
COleDataSource* GetDataSource();
傳回值
物件指標 COleDataSource
,用來儲存轉換格式。
備註
如果您想要讓伺服器應用程式在資料傳輸作業期間以各種格式提供資料,請使用此函式所傳回的物件註冊這些格式 COleDataSource
。 例如,如果您想要為剪貼簿或拖放作業提供 OLE 專案的CF_TEXT標記法,您會向 COleDataSource
這個函式傳回的物件註冊格式,然後覆寫 OnRenderXxxData
成員函式以提供資料。
COleServerItem::GetDocument
呼叫此函式,以取得包含專案的檔指標。
COleServerDoc* GetDocument() const;
傳回值
包含專案的檔的指標;如果專案不是檔的一部分,則為 Null。
備註
這可讓您存取您傳遞為建構函式引數 COleServerItem
的伺服器檔。
COleServerItem::GetEmbedSourceData
呼叫此函式以取得 OLE 專案的CF_EMBEDSOURCE資料。
void GetEmbedSourceData(LPSTGMEDIUM lpStgMedium);
參數
lpStgMedium
STGMEDIUM 結構的指標,該結構將接收 OLE 專案的CF_EMBEDSOURCE資料。
備註
此格式包含專案的原生資料。 您必須已實作成員函式, Serialize
此函式才能正常運作。
然後,您可以使用 COleDataSource::CacheData 將結果新增至資料來源 。 COleServerItem::OnGetClipboardData 會自動 呼叫此函式。
如需詳細資訊,請參閱 Windows SDK 中的 STGMEDIUM 。
COleServerItem::GetItemName
呼叫此函式以取得專案的名稱。
const CString& GetItemName() const;
傳回值
項目的名稱。
備註
您通常只會針對連結的專案呼叫此函式。
COleServerItem::GetLinkSourceData
呼叫此函式以取得 OLE 專案的CF_LINKSOURCE資料。
BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);
參數
lpStgMedium
STGMEDIUM 結構的指標,該結構將接收 OLE 專案的CF_LINKSOURCE資料。
傳回值
如果成功則為非零;否則為 0。
備註
此格式包含描述 OLE 專案類型的 CLSID,以及尋找包含 OLE 專案的檔所需的資訊。
然後,您可以使用 COleDataSource::CacheData 將結果新增至資料來源 。 OnGetClipboardData 會自動 呼叫此函式。
如需詳細資訊,請參閱 Windows SDK 中的 STGMEDIUM 。
COleServerItem::GetObjectDescriptorData
呼叫此函式以取得 OLE 專案的CF_OBJECTDESCRIPTOR資料。
void GetObjectDescriptorData(
LPPOINT lpOffset,
LPSIZE lpSize,
LPSTGMEDIUM lpStgMedium);
參數
lpOffset
從 OLE 專案左上角按一下滑鼠的位移。 可以是 Null。
lpSize
OLE 專案的大小。 可以是 Null。
lpStgMedium
STGMEDIUM 結構的指標,該結構將接收 OLE 專案的CF_OBJECTDESCRIPTOR資料。
備註
資訊會 STGMEDIUM
複製到 lpStgMedium 所 指向的結構中。 此格式包含 [貼上特殊] 對話方塊所需的資訊。
如需詳細資訊,請參閱 Windows SDK 中的 STGMEDIUM 。
COleServerItem::Is連線ed
呼叫此函式以查看 OLE 專案是否已連接。
BOOL IsConnected() const;
傳回值
如果專案已連線,則為非零;否則為 0。
備註
如果一或多個容器具有專案的參考,則 OLE 專案會被視為已連線。 如果專案的參考計數大於 0,或它是內嵌專案,則會連接專案。
COleServerItem::IsLinkedItem
呼叫此函式以查看 OLE 專案是否為連結專案。
BOOL IsLinkedItem() const;
傳回值
如果專案是連結的專案,則為非零;否則為 0。
備註
如果專案有效且未在檔的內嵌專案清單中傳回,則專案會連結。 連結的專案可能或可能未連線到容器。
連結和內嵌專案通常會使用相同的類別。 IsLinkedItem
可讓您讓連結專案的行為與內嵌專案不同,雖然程式碼經常發生多次。
COleServerItem::m_sizeExtent
這個成員會告訴伺服器容器檔案中有多少物件可見。
CSize m_sizeExtent;
備註
OnSetExtent 的預設實作 會設定這個成員。
COleServerItem::NotifyChanged
在連結的專案變更之後呼叫此函式。
void NotifyChanged(DVASPECT nDrawAspect = DVASPECT_CONTENT);
參數
nDrawAspect
DVASPECT 列舉中的值,指出 OLE 專案的哪個層面已變更。 此參數可以具有下列任何值:
DVASPECT_CONTENT Item 是以可顯示為容器内嵌物件的方式表示。
DVASPECT_THUMBNAIL專案會以「縮圖」表示呈現,以便顯示在流覽工具中。
DVASPECT_ICON Item 是由圖示表示。
DVASPECT_DOCPRINT Item 會以 [檔案] 功能表中的 [列印] 命令列印時一樣呈現。
備註
如果容器專案連結至具有自動連結的檔,則會更新專案以反映變更。 在使用 Microsoft Foundation Class Library 撰寫的容器應用程式中, 會呼叫 COleClientItem::OnChange 以回應。
COleServerItem::OnDoVerb
由架構呼叫以執行指定的動詞命令。
virtual void OnDoVerb(LONG iVerb);
參數
iVerb
指定要執行的動詞。 它可以是下列任一項:
值 | 意義 | 符號 |
---|---|---|
0 | 主動詞命令 | OLEIVERB_PRIMARY |
1 | 次要動詞 | (無) |
-1 | 顯示要編輯的專案 | OLEIVERB_SHOW |
-2 | 在不同的視窗中編輯專案 | OLEIVERB_OPEN |
-3 | 隱藏專案 | OLEIVERB_HIDE |
-1 值通常是另一個動詞的別名。 如果不支援開啟編輯,-2 的效果與 -1 相同。 如需其他值,請參閱 Windows SDK 中的 IOleObject::D oVerb 。
備註
如果容器應用程式是以 Microsoft Foundation Class Library 撰寫,則會在呼叫對應 COleClientItem
物件的 COleClientItem::Activate 成員函式時 呼叫此函式。 如果指定主要動詞或OLEIVERB_SHOW,則預設實作會呼叫 OnShow 成員函式、 指定次要動詞或OLEIVERB_OPEN的 OnOpen ,如果 指定了OLEIVERB_HIDE則為 OnHide 。 如果 iVerb 不是上面所列的其中一個動詞,則預設實作會呼叫 OnShow
。
如果您的主要動詞未顯示專案,請覆寫此函式。 例如,如果專案是錄音,且其主要動詞是 Play,則不需要顯示伺服器應用程式來播放專案。
如需詳細資訊,請參閱 Windows SDK 中的 IOleObject::D oVerb 。
COleServerItem::OnDraw
由架構呼叫,將 OLE 專案轉譯成中繼檔。
virtual BOOL OnDraw(
CDC* pDC,
CSize& rSize) = 0;
參數
pDC
要在其中繪製專案的 CDC 物件的指標 。 顯示內容會自動連線到屬性顯示內容,因此您可以呼叫屬性函式,不過這樣做會使中繼檔裝置特定。
rSize
大小,以 HIMETRIC 單位為單位,用來繪製中繼檔。
傳回值
如果成功繪製專案,則為非零;否則為 0。
備註
OLE 專案的中繼檔標記法是用來在容器應用程式中顯示專案。 如果容器應用程式是以 Microsoft Foundation Class Library 撰寫,則對應 COleClientItem 物件的 Draw 成員函式會使用 中繼檔。 沒有預設的實作。 您必須覆寫此函式,才能將專案繪製到指定的裝置內容中。
COleServerItem::OnDrawEx
由架構針對所有繪圖呼叫。
virtual BOOL OnDrawEx(
CDC* pDC,
DVASPECT nDrawAspect,
CSize& rSize);
參數
pDC
要在其中繪製專案的 CDC 物件的指標 。 DC 會自動連線到屬性 DC,因此您可以呼叫屬性函式,不過這樣做會使中繼檔裝置特定。
nDrawAspect
DVASPECT 列舉中的值。 此參數可以具有下列任何值:
DVASPECT_CONTENT Item 是以可顯示為容器内嵌物件的方式表示。
DVASPECT_THUMBNAIL專案會以「縮圖」表示呈現,以便顯示在流覽工具中。
DVASPECT_ICON Item 是由圖示表示。
DVASPECT_DOCPRINT Item 會以 [檔案] 功能表中的 [列印] 命令列印時一樣呈現。
rSize
HIMETRIC 單位中的專案大小。
傳回值
如果成功繪製專案,則為非零;否則為 0。
備註
當 DVASPECT 等於DVASPECT_CONTENT時,預設實作會呼叫 OnDraw
;否則會失敗。
覆寫此函式,為DVASPECT_CONTENT以外的層面提供簡報資料,例如DVASPECT_ICON或DVASPECT_THUMBNAIL。
COleServerItem::OnGetClipboardData
由架構呼叫,以取得 COleDataSource
物件,其中包含呼叫 CopyToClipboard 成員函式時,將放置於剪貼簿 上的所有資料。
virtual COleDataSource* OnGetClipboardData(
BOOL bIncludeLink,
LPPOINT lpOffset,
LPSIZE lpSize);
參數
bIncludeLink
如果應該將連結資料複製到剪貼簿,請將此設定為 TRUE。 如果您的伺服器應用程式不支援連結,請將此設定為 FALSE。
lpOffset
滑鼠游標的位移,以圖元為單位的物件原點。
lpSize
以圖元為單位的物件大小。
傳回值
包含剪貼簿資料的 COleDataSource 物件的指標 。
備註
此函式的預設實作會呼叫 GetClipboardData 。
COleServerItem::OnGetExtent
由架構呼叫以擷取 OLE 專案之 HIMETRIC 單位的大小。
virtual BOOL OnGetExtent(
DVASPECT nDrawAspect,
CSize& rSize);
參數
nDrawAspect
指定要擷取界限的 OLE 專案層面。 此參數可以具有下列任何值:
DVASPECT_CONTENT Item 是以可顯示為容器内嵌物件的方式表示。
DVASPECT_THUMBNAIL專案會以「縮圖」表示呈現,以便顯示在流覽工具中。
DVASPECT_ICON Item 是由圖示表示。
DVASPECT_DOCPRINT Item 會以 [檔案] 功能表中的 [列印] 命令列印時一樣呈現。
rSize
CSize
將接收 OLE 專案大小的 物件參考。
傳回值
如果成功則為非零;否則為 0。
備註
如果容器應用程式是以 Microsoft Foundation Class Library 撰寫,則會在呼叫對應 COleClientItem
物件的 GetExtent 成員函式時 呼叫此函式。 預設實作不做任何動作。 您必須自行實作。 如果您想要在處理 OLE 專案大小的要求時執行特殊處理,請覆寫此函式。
COleServerItem::OnHide
由架構呼叫以隱藏 OLE 專案。
virtual void OnHide();
備註
預設會呼叫 COleServerDoc::OnShowDocument( FALSE )
。 函式也會通知容器 OLE 專案已隱藏。 如果您想要在隱藏 OLE 專案時執行特殊處理,請覆寫此函式。
COleServerItem::OnInitFromData
由架構呼叫,以使用 pDataObject 的內容 初始化 OLE 專案。
virtual BOOL OnInitFromData(
COleDataObject* pDataObject,
BOOL bCreation);
參數
pDataObject
OLE 資料物件的指標,其中包含初始化 OLE 專案之各種格式的資料。
bCreation
如果呼叫 函式來初始化容器應用程式新建立的 OLE 專案,則為 TRUE。 如果呼叫 函式來取代現有 OLE 專案的內容,則為 FALSE。
傳回值
如果成功則為非零;否則為 0。
備註
如果 bCreation 為 TRUE,如果容器根據目前的選取範圍實作 Insert New Object,就會呼叫此函式。 建立新的 OLE 專案時,會使用選取的資料。 例如,在試算表程式中選取儲存格範圍,然後使用 [插入新物件] 根據選取範圍中的值來建立圖表。 預設實作不做任何動作。 覆寫此函式,從 pDataObject 提供 的格式中選擇可接受的格式,並根據所提供的資料初始化 OLE 專案。 這是可覆寫的進階。
如需詳細資訊,請參閱 Windows SDK 中的 IOleObject::InitFromData 。
COleServerItem::OnOpen
由架構呼叫,以在伺服器應用程式的個別實例中顯示 OLE 專案,而不是就地顯示。
virtual void OnOpen();
備註
預設實作會啟動第一個框架視窗,其中顯示包含 OLE 專案的檔;如果應用程式是迷你伺服器,則預設實作會顯示主視窗。 函式也會通知容器 OLE 專案已開啟。
如果您想要在開啟 OLE 專案時執行特殊處理,請覆寫此函式。 這特別適用于您要在開啟連結時將選取範圍設定為連結的連結專案。
如需詳細資訊,請參閱 Windows SDK 中的 IOleClientSite::OnShowWindow 。
COleServerItem::OnQueryUpdateItems
由架構呼叫,以判斷目前伺服器檔中的任何連結專案是否過期。
virtual BOOL OnQueryUpdateItems();
傳回值
如果檔有需要更新的專案,則為非零;如果所有專案都是最新的,則為 0。
備註
如果專案來源文件已變更,但連結的專案尚未更新,以反映檔中的變更,則專案已過期。
COleServerItem::OnRenderData
由架構呼叫,以擷取指定格式的資料。
virtual BOOL OnRenderData(
LPFORMATETC lpFormatEtc,
LPSTGMEDIUM lpStgMedium);
參數
lpFormatEtc
指向 FORMATETC 結構,指定要求資訊的格式。
lpStgMedium
指向要傳回資料的 STGMEDIUM 結構。
傳回值
如果成功則為非零;否則為 0。
備註
指定的格式是先前使用 DelayRenderData 或 DelayRenderFileData 成員函式放置於 物件中 COleDataSource
,以供延遲轉 譯。 如果提供的儲存媒體是檔案或記憶體,則此函式的預設實作會分別呼叫 OnRenderFileData 或 OnRenderGlobalData 。 如果未提供這兩種格式,則預設實作會傳回 0,而且不會執行任何動作。
如果 lpStgMedium-tymed > 是TYMED_Null,STGMEDIUM 應該配置並填滿,如 lpFormatEtc-tymed > 所 指定。 如果未TYMED_Null,STGMEDIUM 應該會填入資料。
這是可覆寫的進階。 覆寫此函式,以要求的格式和媒體提供您的資料。 視您的資料而定,您可能想要改為覆寫此函式的其他其中一個版本。 如果您的資料大小較小且大小固定,請覆寫 OnRenderGlobalData
。 如果您的資料位於檔案中,或大小不一,請覆寫 OnRenderFileData
。
如需詳細資訊,請參閱 Windows SDK 中的 IDataObject::GetData 、 STGMEDIUM 、 FORMATETC 和 TYMED 。
COleServerItem::OnRenderFileData
架構呼叫,以在儲存媒體為檔案時擷取指定格式的資料。
virtual BOOL OnRenderFileData(
LPFORMATETC lpFormatEtc,
CFile* pFile);
參數
lpFormatEtc
指向 FORMATETC 結構,指定要求資訊的格式。
pFile
CFile
指向要轉譯資料的 物件。
傳回值
如果成功則為非零;否則為 0。
備註
指定的格式是先前使用 DelayRenderData 成員函式在 物件中 COleDataSource
放置的格式,以供延遲轉譯。 此函式的預設實作只會傳回 FALSE。
這是可覆寫的進階。 覆寫此函式,以要求的格式和媒體提供您的資料。 視您的資料而定,您可能會想要改為覆寫此函式的其他其中一個版本。 如果您想要處理多個儲存媒體,請覆寫 OnRenderData 。 如果您的資料位於檔案中,或大小不一,請覆寫 OnRenderFileData 。
如需詳細資訊,請參閱 Windows SDK 中的 IDataObject::GetData 和 FORMATETC 。
COleServerItem::OnRenderGlobalData
當指定的儲存媒體是全域記憶體時,由架構呼叫以指定格式擷取資料。
virtual BOOL OnRenderGlobalData(
LPFORMATETC lpFormatEtc,
HGLOBAL* phGlobal);
參數
lpFormatEtc
指向 FORMATETC 結構,指定要求資訊的格式。
phGlobal
指向要傳回資料之全域記憶體的控制碼。 如果未配置記憶體,此參數可以是 Null。
傳回值
如果成功則為非零;否則為 0。
備註
指定的格式是先前使用 DelayRenderData 成員函式在 物件中 COleDataSource
放置的格式,以供延遲轉譯。 此函式的預設實作只會傳回 FALSE。
如果 phGlobal 為 Null,則應該在 phGlobal 中 配置並傳回新的 HGLOBAL 。 否則,phGlobal 所 指定的 HGLOBAL 應該填入資料。 放置於 HGLOBAL 的資料量不得超過記憶體區塊的目前大小。 此外,區塊無法重新配置為較大的大小。
這是可覆寫的進階。 覆寫此函式,以要求的格式和媒體提供您的資料。 視您的資料而定,您可能想要改為覆寫此函式的其他其中一個版本。 如果您想要處理多個儲存媒體,請覆寫 OnRenderData 。 如果您的資料位於檔案中,或大小不一,請覆寫 OnRenderFileData 。
如需詳細資訊,請參閱 Windows SDK 中的 IDataObject::GetData 和 FORMATETC 。
COleServerItem::OnSetColorScheme
由架構呼叫,以指定編輯 OLE 專案時要使用的調色盤。
virtual BOOL OnSetColorScheme(const LOGPALETTE* lpLogPalette);
參數
lpLogPalette
Windows LOGPALETTE 結構的指標。
傳回值
如果使用調色盤,則為非零;否則為 0。
備註
如果使用 Microsoft Foundation Class Library 撰寫容器應用程式,則會在呼叫對應 COleClientItem
物件的 IOleObject::SetColorScheme 函式時 呼叫此函式。 預設實作會傳回 FALSE。 如果您想要使用建議的調色盤,請覆寫此函式。 伺服器應用程式不需要使用建議的調色盤。
如需詳細資訊,請參閱 Windows SDK 中的 IOleObject::SetColorScheme 。
COleServerItem::OnSetData
由架構呼叫,以將 OLE 專案的資料取代為指定的資料。
virtual BOOL OnSetData(
LPFORMATETC lpFormatEtc,
LPSTGMEDIUM lpStgMedium,
BOOL bRelease);
參數
lpFormatEtc
指定資料格式之 FORMATETC 結構的指標。
lpStgMedium
資料所在的 STGMEDIUM 結構的指標。
bRelease
指出完成函式呼叫之後,誰擁有儲存媒體的擁有權。 呼叫端決定誰負責釋放代表儲存媒體配置的資源。 呼叫端藉由設定 bRelease 來執行此工作。 如果 bRelease 為非零,伺服器專案會取得擁有權,在完成使用媒體時釋放媒體。 當 bRelease 為 0 時 ,呼叫端會保留擁有權,而伺服器專案只能在通話期間使用儲存媒體。
傳回值
如果成功則為非零;否則為 0。
備註
在成功取得資料之前,伺服器專案不會取得資料的擁有權。 也就是說,如果傳回 0,則不會取得擁有權。 如果資料來源取得擁有權,它會藉由呼叫 ReleaseStgMedium 函式釋放儲存媒體。
預設實作不做任何動作。 覆寫此函式,以將 OLE 專案的資料取代為指定的資料。 這是可覆寫的進階。
如需詳細資訊,請參閱 Windows SDK 中的 STGMEDIUM 、 FORMATETC 和 ReleaseStgMedium 。
COleServerItem::OnSetExtent
由架構呼叫,告知 OLE 專案在容器檔案中有多少空間可供它使用。
virtual BOOL OnSetExtent(
DVASPECT nDrawAspect,
const CSize& size);
參數
nDrawAspect
指定正在指定界限之 OLE 專案的層面。 此參數可以具有下列任何值:
DVASPECT_CONTENT Item 是以可顯示為容器内嵌物件的方式表示。
DVASPECT_THUMBNAIL專案會以「縮圖」表示呈現,以便顯示在流覽工具中。
DVASPECT_ICON Item 是由圖示表示。
DVASPECT_DOCPRINT Item 會以 [檔案] 功能表中的 [列印] 命令列印時一樣呈現。
傳回值
如果成功則為非零;否則為 0。
備註
如果容器應用程式是以 Microsoft Foundation Class Library 撰寫,則會在呼叫對應 COleClientItem
物件的 SetExtent 成員函式時 呼叫此函式。 如果 nDrawAspect 為DVASPECT_CONTENT,預設實作會將 m_sizeExtent 成員設定為指定的大小,否則會傳回 0。 覆寫此函式,以在變更專案的大小時執行特殊處理。
COleServerItem::OnShow
由架構呼叫,指示伺服器應用程式就地顯示 OLE 專案。
virtual void OnShow();
備註
當容器應用程式的使用者建立專案或執行動詞命令時,通常會呼叫此函式,例如需要顯示該專案的 Edit。 預設實作會嘗試就地啟用。 如果失敗,函式會呼叫 OnOpen
成員函式,以在不同的視窗中顯示 OLE 專案。
如果您想要在顯示 OLE 專案時執行特殊處理,請覆寫此函式。
COleServerItem::OnUpdate
修改專案時由架構呼叫。
virtual void OnUpdate(
COleServerItem* pSender,
LPARAM lHint,
CObject* pHint,
DVASPECT nDrawAspect);
參數
pSender
修改檔之專案的指標。 可以是 Null。
lHint
包含修改的相關資訊。
pHint
儲存修改相關資訊的物件指標。
nDrawAspect
DVASPECT 列舉中的值。 此參數可以有下列任何一個值:
DVASPECT_CONTENT Item 是以可顯示為容器内嵌物件的方式表示。
DVASPECT_THUMBNAIL專案會以「縮圖」表示呈現,以便顯示在流覽工具中。
DVASPECT_ICON Item 是由圖示表示。
DVASPECT_DOCPRINT Item 會以 [檔案] 功能表中的 [列印] 命令列印時一樣呈現。
備註
不論提示或寄件者為何,預設實作都會呼叫 NotifyChanged 。
COleServerItem::OnUpdateItems
由架構呼叫以補救伺服器檔中的所有專案。
virtual void OnUpdateItems();
備註
預設實作會針對檔中的所有 COleClientItem
物件呼叫 UpdateLink 。
COleServerItem::SetItemName
當您建立連結專案以設定其名稱時,請呼叫此函式。
void SetItemName(LPCTSTR lpszItemName);
參數
lpszItemName
專案新名稱的指標。
備註
名稱在檔中必須是唯一的。 呼叫伺服器應用程式以編輯連結的專案時,應用程式會使用此名稱來尋找專案。 您不需要針對內嵌專案呼叫此函式。
另請參閱
MFC 範例 HIERSVR
CDocItem 類別
階層架構圖表
COleClientItem 類別
COleServerDoc 類別
COleTemplateServer 類別
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應