IDataObject::SetData 方法 (objidl.h)

由包含数据源的 对象调用,以将数据传输到实现此方法的对象。

语法

HRESULT SetData(
  [in] FORMATETC *pformatetc,
  [in] STGMEDIUM *pmedium,
  [in] BOOL      fRelease
);

parameters

[in] pformatetc

指向 FORMATETC 结构的指针,用于定义解释存储介质中包含的数据时数据对象使用的格式。

[in] pmedium

指向 STGMEDIUM 结构的指针,该结构定义在其中传递数据的存储介质。

[in] fRelease

如果 为 TRUE,则调用的数据对象(实现 SetData)在调用返回后拥有存储介质。 这意味着它必须通过调用 ReleaseStgMedium 函数来释放媒体。 如果 为 FALSE,则调用方保留存储介质的所有权,并且调用的数据对象仅在调用期间使用该存储介质。

返回值

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

返回代码 说明
DV_E_LINDEX
lindex 的值无效;目前仅支持 -1。
DV_E_FORMATETC
pformatetc 的值无效。
DV_E_TYMED
tymed 值无效。
DV_E_DVASPECT
dwAspect 值无效。
OLE_E_NOTRUNNING
对象应用程序未运行。
E_FAIL
此操作失败。
E_UNEXPECTED
发生意外错误。
E_INVALIDARG
dwDirection 值无效。
E_OUTOFMEMORY
此操作的可用内存不足。

注解

SetData 允许另一个对象尝试将数据发送到实现的数据对象。 如果数据对象支持从另一个对象接收数据,则它实现此方法。 如果不支持此操作,则应实现它以返回E_NOTIMPL。

调用方分配 由 pmedium 参数指示的存储介质,其中传递数据。 在成功接收数据且未返回错误代码之前,名为 的数据对象不会获得数据的所有权。 fRelease 参数的值指示调用返回后媒体的所有权。 FALSE 表示调用方仍拥有媒体,并且数据对象在调用期间仅使用它; TRUE 表示数据对象现在拥有它,并且必须在不再需要它时释放它。

pformatetcpmedium 参数中指定的媒体类型必须相同。 例如,一个不能是全局句柄,另一个不能是流。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 objidl.h

请参阅

IDataObject