Структура FORMATETC

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

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

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

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

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