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 实例的指针,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;对于CF_DIB或CF_BITMAP,则为类CLSID_StaticDib;对于CF_ENHMETAFILE,则为CLSID_Picture_EnhMetafile。 静态对象设置从 IOleObject::GetMiscStatus 返回的OLEMISC_STATIC和OLE_CANTLINKINSIDE位。 静态对象的方面DVASPECT_CONTENT,LINDEX 为 -1。
在 OleCreateStaticFromData 返回后,pSrcDataObject 仍然有效。 调用方负责释放 pSrcDataObject - OLE 不会释放它。
静态对象中不能有多个演示流。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | ole2.h |
Library | Ole32.lib |
DLL | Ole32.dll |