OleCreateStaticFromData 函式 (ole2.h)
從數據傳輸物件建立僅包含沒有原生數據的表示法的靜態物件。
語法
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。
pSrcDataObject 在 OleCreateStaticFromData 傳回之後仍然有效。 呼叫者必須負責免費 pSrcDataObject - OLE 不會釋出它。
靜態物件中不能有多個簡報數據流。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | ole2.h |
程式庫 | Ole32.lib |
Dll | Ole32.dll |