OleCreateLinkFromData 函数 (ole2.h)

从从剪贴板检索或作为 OLE 拖放操作的一部分检索的数据传输对象创建链接对象。

语法

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

参数

[in] pSrcDataObj

指向要从中创建链接对象的数据传输对象上的 IDataObject 接口的指针。

[in] riid

对接口标识符的引用,调用方稍后用于与新对象通信 (通常IID_IOleObject,在 OLE 标头中定义为 IOleObject) 的接口标识符。

[in] renderopt

枚举 OLERENDER 中的值,指示新创建的对象要具有的本地缓存绘图或数据检索功能。 以下“备注”部分介绍了其他注意事项。

[in] pFormatEtc

指向枚举 OLERENDER 中的值的指针,该值指示新创建的对象要具有的本地缓存绘图或数据检索功能。 选择的 OLERENDER 值会影响 pFormatEtc 参数的可能值。

[in] pClientSite

指向 IOleClientSite 实例的指针,该实例是对象通过其从其容器请求服务的主接口。 此参数可以为 NULL。

[in] pStg

指向存储对象上的 IStorage 接口的指针。 此参数不能为 NULL

[out] ppvObj

接收 riid 中请求的接口指针的指针变量的地址。 成功返回后, ppvObj 将包含新创建对象上请求的接口指针。

返回值

此函数在成功时返回S_OK。 其他可能的值包括以下内容。

返回代码 说明
CLIPBRD_E_CANT_OPEN
无法打开剪贴板。
OLE_E_CANT_GETMONIKER
无法提取对象的名字对象。
OLE_E_CANT_BINDTOSOURCE
无法绑定到源。 必须绑定才能获取缓存的初始化数据。

注解

OleCreateLinkFromData 函数用于实现粘贴链接或拖动链接操作。 其操作类似于 OleCreateFromData 函数的操作,只不过它创建链接并查找不同的数据格式。 如果CF_LINKSOURCE格式不存在,并且数据传输对象中存在 FileName 或 FileNameW 剪贴板格式, 则 OleCreateLinkFromData 将创建一个包,其中包含指向所指示文件的链接。

使用 renderopt 和 pFormatetc 参数来控制新创建的 对象的缓存功能。 有关如何确定要缓存的内容的一般信息,请参阅 OLERENDER 枚举,了解 renderopt 和 pFormatetc 之间的交互说明。 但是,这些参数对 OleCreateLinkFromData 初始化缓存的方式有一些其他特定影响,如下所示。

说明
OLERENDER_DRAW、OLERENDER_FORMAT 如果演示文稿信息采用源数据对象中的其他格式,则使用此信息。 如果信息不存在,则缓存最初为空,但在首次运行对象时将填充缓存。 没有其他格式缓存在新创建的对象中。
OLERENDER_NONE、OLERENDER_ASIS 不会在新创建的对象中缓存任何内容。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 ole2.h
Library Ole32.lib
DLL Ole32.dll

另请参阅

OleCreateLink