Поделиться через


Структура FORMATETC

Структура FORMATETC — это обобщенный формат буфера обмена, расширенный для охвата целевого устройства, аспектом или представлением данных и средой хранения. Потребитель данных, например, приложение контейнера OLE, передает структуру FORMATETC в качестве аргумента в вызовах к IDataObject, чтобы указать тип данных, которые оно хочет получить из источника данных, например, составного объекта документа. Источник использует структуру FORMATETC для описания форматов, которые он может предоставить.

FORMATETC могут описать практически любые данные, включая другие объекты, такие как моникеры. Контейнер может попросить один из внедренных объектов перечислить форматы данных путем вызова IDataObject::EnumFormatEtc, который возвращает объект перечислителя, реализующий интерфейс IEnumFORMATETC. Вместо ответа на то, что он имеет "текст и растровое изображение", объект может предоставить подробное описание данных, включая устройство (обычно экран или принтер), для которого он отрисовывается, аспект, который будет представлен пользователю (полное содержимое, эскиз, значок или форматированный для печати), а также носитель хранилища, содержащий данные (глобальная память, файл диска, объект хранилища или поток). Эта возможность тесно описывать данные со временем приведет к повышению качества печати и отображения на экране, а также более эффективному просмотру данных, где эскиз гораздо быстрее извлекается и отображается, чем полностью подробное представление.

В следующей таблице перечислены поля структуры данных FORMATETC и указанные ими сведения.

Поле Указывает
cfFormat
Формат, в котором представлены данные, который может быть стандартным форматом буфера обмена, собственным форматом или форматом OLE. Дополнительные сведения о форматах OLE см. в разделах Compound Documents.
ptd
Структура DVTARGETDEVICE, которая содержит достаточную информацию о целевом устройстве Windows, например, как экране или принтере, чтобы можно было создать дескриптор контекста устройства (hDC) с помощью функции CreateDC.
dwAspect
Аспект или вид данных для отображения; может быть полным содержимым, эскизом, значком или в формате для печати.
lindex
Часть аспекта, который имеет интерес; для текущего значения должно быть -1, указывающее, что весь вид является интересом.

Носитель хранилища данных, который может быть глобальной памятью, файлом диска или экземпляром одного из структурированных интерфейсов хранилища COM.

форматы данных и носители передачи