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 实例的指针,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

另请参阅

OleCreateFromData