FORMATETC 结构

FORMATETC 结构是一种通用的剪贴板格式,经过增强以包含目标设备、数据的一个方面或视图以及存储介质。 数据使用者(如 OLE 容器应用程序)在对 IDataObject 的调用中传递 FORMATETC 结构作为参数,以指示它希望从数据源(如复合文档对象)获得的数据类型。 源使用 FORMATETC 结构来描述它可以提供的格式。

FORMATETC 几乎可以描述任何数据,包括其他对象,如名字对象。 容器可以通过调用 IDataObject::EnumFormatEtc 来请求其嵌入对象之一列出其数据格式,后者返回实现 IEnumFORMATETC 接口的枚举器对象。 对象可以提供数据的详细描述,包括呈现数据的设备(通常是屏幕或打印机)、要呈现给用户的方面(完整内容、缩略图、图标或格式化打印)以及包含数据的存储介质(全局内存、磁盘文件、存储对象或流),而不仅仅是答复它有“文本和位图”。 这种紧密描述数据的能力最终将产生更高质量的打印机和屏幕输出,以及更高的数据浏览效率,其中缩略图草图比完全详细的呈现更快地检索和显示。

下表列出了 FORMATETC 数据结构的字段及其指定的信息。

字段 指定
cfFormat
要呈现数据的格式,可以是标准剪贴板格式、专有格式或 OLE 格式。 有关 OLE 格式的详细信息,请参阅复合文档
ptd
DVTARGETDEVICE 结构,其中包含有关 Windows 目标设备(如屏幕或打印机)的足够信息,以便可以使用 CreateDC 函数创建对其设备上下文 (hDC) 的句柄。
dwAspect
要呈现的数据的方面或视图;可以是完整的内容、缩略图、图标,也可以格式化以供打印。
lindex
方面中感兴趣的部分:对于演示,该值必须为 -1,表示对整个视图都感兴趣。
tymed
数据的存储介质,可以是全局内存、磁盘文件或 COM 结构化存储接口之一的实例。

数据格式和传输介质