IDataObject::GetData 方法 (objidl.h)
由数据使用者调用,以从源数据对象获取数据。 GetData 方法呈现指定 FORMATETC 结构中描述的数据,并通过指定的 STGMEDIUM 结构传输数据。 然后,调用方负责释放 STGMEDIUM 结构。
语法
HRESULT GetData(
[in] FORMATETC *pformatetcIn,
[out] STGMEDIUM *pmedium
);
参数
[in] pformatetcIn
指向 FORMATETC 结构的指针,该结构定义在传递数据时要使用的格式、介质和目标设备。 使用布尔型 OR 运算符可以指定多个介质,从而允许方法在指定的介质中做出最佳选择。
[out] pmedium
指向 STGMEDIUM 结构的指针,指示存储介质包含通过其 tymed 成员返回的数据,以及通过其 pUnkForRelease 成员的值释放介质的责任。 如果 pUnkForRelease 为 NULL,则媒体的接收器负责释放它;否则, pUnkForRelease 指向相应对象的 IUnknown ,以便可以调用其 Release 方法。 媒体必须由 GetData 分配和填充。
返回值
此方法在成功时返回S_OK。 其他可能的值包括以下内容。
返回代码 | 说明 |
---|---|
|
lindex 的值无效;目前仅支持 -1。 |
|
pformatetcIn 的值无效。 |
|
tymed 值无效。 |
|
dwAspect 值无效。 |
|
对象应用程序未运行。 |
|
分配介质时出错。 |
|
发生意外错误。 |
|
dwDirection 值无效。 |
|
此操作的可用内存不足。 |
注解
数据使用者调用 GetData 从数据对象检索数据,该数据对象通过存储介质 (通过 STGMEDIUM 结构) 定义。
给调用方的说明
可以使用布尔 OR 运算符指定多个可接受的 tymed 媒体。 GetData 必须从 OR'd 值中选择最能代表数据的介质,执行分配,并指示释放介质的责任。跨流传输的数据从流指针的位置 0 扩展到当前流指针 (紧靠当前流指针之前的位置,即) 退出时流指针的位置。
实施者说明
GetData 必须检查 FORMATETC 结构中的所有字段。 请务必让 GetData 呈现请求的方面,并尽可能使用请求的媒体。 如果数据对象不符合 FORMATETC 中指定的信息,该方法应返回DV_E_FORMATETC。 如果尝试分配介质失败,该方法应返回STG_E_MEDIUMFULL。 请务必填写 STGMEDIUM 结构中的所有字段。尽管调用方可以指定多个媒体来返回数据, 但 GetData 只能提供一个介质。 如果初始传输因所选介质而失败,则可以实现此方法,以在返回错误之前尝试指定的其他介质之一。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | objidl.h |