IDataObject::GetCanonicalFormatEtc 方法 (objidl.h)
提供可能不同但逻辑上等效的 FORMATETC 结构。 使用此方法可以确定两个不同的 FORMATETC 结构是否会返回相同的数据,从而消除了重复呈现的需要。
语法
HRESULT GetCanonicalFormatEtc(
[in] FORMATETC *pformatectIn,
[out] FORMATETC *pformatetcOut
);
参数
[in] pformatectIn
指向 FORMATETC 结构的指针,该结构定义调用方希望用于在后续调用(如 IDataObject::GetData)中检索数据的格式、介质和目标设备。 在这种情况下 ,tymed 成员并不重要,应忽略。
[out] pformatetcOut
指向 FORMATETC 结构的指针,该结构包含特定呈现可能的最常规信息,使其在规范上等效于 pformatetcIn。 调用方必须分配此结构, 并且 GetCanonicalFormatEtc 方法必须填充数据。 若要在后续调用(如 IDataObject::GetData)中检索数据,调用方将使用指定的 pformatetcOut 值,除非指定的值为 NULL。 如果方法返回DATA_S_SAMEFORMATETC,则此值为 NULL 。 在这种情况下 ,tymed 成员并不重要,应忽略。
返回值
此方法可以返回以下值。
返回代码 | 说明 |
---|---|
|
返回的 FORMATETC 结构与传递的结构不同。 |
|
FORMATETC 结构相同,pformatetcOut 中返回 NULL。 |
|
lindex 的值无效;目前仅支持 -1。 |
|
pformatetc 的值无效。 |
|
对象应用程序未运行。 |
|
发生意外错误。 |
|
dwDirection 参数无效。 |
|
可用于此操作的内存不足。 |
注解
如果数据对象可以为多个请求的 FORMATETC 结构提供完全相同的数据,则 GetCanonicalFormatEtc 可以提供与一组更复杂的 FORMATETC 结构相同的呈现的“规范”或标准 FORMATETC。 例如,返回的数据通常对一组其他类似的 FORMATETC 结构中的任何一个中指定的目标设备不敏感。
调用方备注
调用此方法可以确定对数据对象进行 两次 IDataObject::GetData 调用(指定两个不同的 FORMATETC 结构)是否实际生成相同的呈现,从而无需第二次调用并提高性能。 如果对 GetCanonicalFormatEtc 的调用导致将规范格式写入 pformatetcOut 参数,则调用方随后在对 IDataObject::GetData 的后续调用中使用该结构。实施者说明
从概念上讲,可以考虑由规范 FORMATETC 定义的组中的 FORMATETC 结构,该组提供与每个组成员相同的结果。 在构造规范 FORMATETC 时,应确保它包含可能仍生成特定呈现的最常规信息。对于从未提供设备特定呈现的数据对象,此方法最简单的实现是将输入 FORMATETC 复制到输出 FORMATETC,在输出 FORMATETC 的 ptd 成员中存储 NULL,并返回DATA_S_SAMEFORMATETC。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | objidl.h |