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