IDataObject::GetDataHere 方法 (objidl.h)
由数据使用者调用,以从源数据对象获取数据。 此方法与 GetData 方法的不同之处在于调用方必须分配和释放指定的存储介质。
语法
HRESULT GetDataHere(
[in] FORMATETC *pformatetc,
[in, out] STGMEDIUM *pmedium
);
parameters
[in] pformatetc
指向 FORMATETC 结构的指针,该结构定义在传递数据时要使用的格式、介质和目标设备。 tymed 中只能指定一个介质,并且只有以下值有效:TYMED_ISTORAGE、TYMED_ISTREAM、TYMED_HGLOBAL或TYMED_FILE。
[in, out] pmedium
指向 STGMEDIUM 结构的指针,该结构定义包含所传输数据的存储介质。 媒体必须由调用方分配,并由 GetDataHere 填充。 调用方还必须释放介质。 此方法的实现必须始终为此参数指向的 STGMEDIUM 结构的 punkForRelease 成员提供 NULL 值。
返回值
此方法在成功时返回S_OK。 其他可能的值包括以下内容。
返回代码 | 说明 |
---|---|
|
lindex 的值无效;目前仅支持 -1。 |
|
pformatetc 的值无效。 |
|
tymed 值无效。 |
|
dwAspect 值无效。 |
|
对象应用程序未运行。 |
|
分配介质时出错。 |
|
发生意外错误。 |
|
dwDirection 参数无效。 |
|
此操作的可用内存不足。 |
注解
GetDataHere 方法类似于 IDataObject::GetData,只不过调用方必须分配和释放 pmedium 中指定的媒体。 GetDataHere 呈现 FORMATETC 结构中描述的数据,并将数据复制到调用方提供的 STGMEDIUM 结构中。 例如,如果介质TYMED_HGLOBAL,则此方法无法重设介质大小或分配新的 hGlobal。
某些媒体不适合调用 GetDataHere,包括 GDI 类型(如图元文件)。 GetDataHere 方法无法将数据放入调用方提供的图元文件。 通常,此方法中唯一需要支持的存储媒体是TYMED_ISTORAGE、TYMED_ISTREAM和TYMED_FILE。
当传输介质为流时,OLE 会假设返回数据的位置以及流的搜寻指针的位置。 在 GetData 调用中,返回的数据从流位置零到流 (当前查找指针之前,即退出时的位置) 。 对于 GetDataHere,返回的数据是从输入时流位置到退出位置之前。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | objidl.h |