Share via


OleCreateStaticFromData 函式 (ole2.h)

從數據傳輸物件建立僅包含沒有原生數據的表示法的靜態物件。

注意 OLESTREAM 至 IStorage 轉換函式也會轉換靜態物件。
 

語法

HRESULT OleCreateStaticFromData(
  [in]  LPDATAOBJECT    pSrcDataObj,
  [in]  REFIID          iid,
  [in]  DWORD           renderopt,
  [in]  LPFORMATETC     pFormatEtc,
  [in]  LPOLECLIENTSITE pClientSite,
  [in]  LPSTORAGE       pStg,
  [out] LPVOID          *ppvObj
);

參數

[in] pSrcDataObj

數據傳輸物件上 IDataObject 介面的指標,該物件會保存要從中建立對象的數據。

[in] iid

參考呼叫端用來與新對象通訊的標識碼, (通常IID_IOleObject,在 OLE 標頭中定義為 IOleObject) 的介面識別碼。

[in] renderopt

列舉 OLERENDER 的值,指出容器在新建立的元件中想要的本機快取繪圖或數據擷取功能。 將轉譯選項OLERENDER_NONE或OLERENDER_ASIS傳遞至此函式是錯誤的。

[in] pFormatEtc

根據 使用哪一個 OLERENDER 旗標做為 renderopt 的值,可能是其中一個 FORMATETC 列舉值的指標。 如需限制,請參閱 OLERENDER 列舉。

[in] pClientSite

IOleClientSite 實例的指標,這是物件從其容器要求服務的主要介面。 此參數可以是 Null

[in] pStg

物件記憶體的 IStorage 介面指標。 此參數不可為 NULL

[out] ppvObj

接收 riid 中要求的介面指標的指標變數位址。 成功傳回時,*ppvObj 會在新建立的物件上包含要求的介面指標。

傳回值

此函式會在成功時傳回S_OK。

備註

只要 OleCreateStaticFromData 函式提供 IDataObject 介面,就可以將任何物件轉換成靜態物件。 實作 OLE 連結或內嵌的 [轉換為圖片] 選項很有用。

只有當來源支援其中一種 OLE 轉譯剪貼簿格式時,才能建立靜態物件:CF_METAFILEPICT、CF_DIB或CF_ BITMAP,以及CF_ENHMETAFILE。

您也可以呼叫 OleCreateStaticFromData ,從剪貼簿貼上靜態物件。 若要判斷物件是否為靜態,請呼叫 OleQueryCreateFromData 函式,如果其中一個CF_METAFILEPICT、CF_DIB、CF_BITMAP或CF_ENHMETAFILE不存在,且 OLE 格式不存在,則會傳回OLE_S_STATIC。 這表示您應該呼叫 OleCreateStaticFromData ,而不是 OleCreateFromData 函式來建立物件。

新的靜態物件在CF_METAFILEPICT的情況下為類別CLSID_StaticMetafile、CLSID_StaticDib在CF_DIB或CF_BITMAP的情況下,或CLSID_Picture_EnhMetafile CF_ENHMETAFILE。 靜態物件會設定 從 IOleObject::GetMiscStatus 傳回的OLEMISC_STATIC和OLE_CANTLINKINSIDE位。 靜態物件會有DVASPECT_CONTENT和 -1 的 LINDEX。

pSrcDataObjectOleCreateStaticFromData 傳回之後仍然有效。 呼叫者必須負責免費 pSrcDataObject - OLE 不會釋出它。

靜態物件中不能有多個簡報數據流。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 ole2.h
程式庫 Ole32.lib
Dll Ole32.dll

另請參閱

OleCreateFromData