FORMATETC 结构是通用剪贴板格式,增强为包含目标设备、数据的视角或视图以及存储介质。 数据使用者(如 OLE 容器应用程序)将 FORMATETC 结构作为对 IDataObject 的调用中的参数传递,以指示它想要从数据源(如复合文档对象)获取的数据类型。 源使用 FORMATETC 结构来描述它可以提供的格式。
FORMATETC 几乎可以描述任何数据,包括其他对象,如名字对象。 容器可以通过调用 IDataObject::EnumFormatEtc 来请求其嵌入对象之一列出其数据格式,后者返回实现 IEnumFORMATETC 接口的枚举器对象。 对象不能仅答复具有“文本和位图”,而是提供数据的详细说明,包括呈现数据的设备(通常为屏幕或打印机),向用户呈现的方面(完整内容、缩略图、图标或打印格式),以及包含数据的存储介质(全局内存, 磁盘文件、存储对象或流)。 能够及时严格描述数据,从而产生更高质量的打印机和屏幕输出,以及数据浏览的效率更高,其中缩略图草图的检索和显示速度比完全详细的呈现要快得多。
下表列出了 FORMATETC 数据结构的字段及其指定的信息。
| 领域 | 指定 |
|---|---|
|
cfFormat |
要呈现数据的格式,可以是标准剪贴板格式、专有格式或 OLE 格式。 有关 OLE 格式的详细信息,请参阅 复合文档。 |
|
ptd |
DVTARGETDEVICE 结构,其中包含有关 Windows 目标设备(如屏幕或打印机)的足够信息,以便可以使用 CreateDC 函数创建对其设备上下文(hDC)的句柄。 |
|
dwAspect |
要呈现的数据的方面或视图;可以是完整内容、缩略图草图、图标或格式以供打印。 |
|
lindex |
感兴趣的方面中的部分。 最常见的值为 -1,表示整个视图都感兴趣。 从零开始的索引应用于 CFSTR_FILECONTENTS 格式。 |
|
tymed |
数据的存储介质,可以是全局内存、磁盘文件或 COM 结构化存储接口之一的实例。 |