Растровые изображения, пиктограммы и метафайлы, страница 12

Включаемый файл

wingdi.h

См. также

CreateEnhMetaFUe

Пример

В примере, показанном на рис. 13.11, при обработке сообщения WM_PAINT загружается метафайл и отображается в клиентской области окна. Когда пользователь выбирает пункт меню Test!, происходит получение и отображение описания метафайла.

См.    \local-sources\chapl3\13-17. txt

GetEnhMetaFileHeader                   * Windows 98   • Windows 2000

Описание

Функция GetEnhMetaFileHeader позволяет получить из расширенного метафайла запись, содержащую заголовок.

Синтаксис

UINT GetEnhMetaFileHeader( HENHMETAFILE hemf, UINT cbBuffer, LPENHMETAHEADER Ipemh )

Параметры hemf

HENHMETAFILE. Дескриптор расширенного метафайла.

cbBuffer Ipemh

UINT. Размер в байтах буфера, который должен принять данные LPENHMETAHEADER Указатель на структуру ENHMETAHEADER, которая должна принять запись заголовка. Если этот параметр установлен равным NULL, возвращаемое значение — размер записи заголовка. Определение структуры ENHMETAHEADER приведено ниже.

Возвращаемое значение

UINT. Если параметр Ipemh равен NULL — размер записи, которая содержит заголовок; в ином случае — число скопированных байтов. В случае возникновения ошибки возвращаемое значение — 0.

Включаемый файл

wingdi.h

См. также

PlayEnhMetaFile, CreateEnhMetaFile

Определение ENHMETAHEADERtypedef struct tagENHMETAHEADER{ DWORD iType; DWORD nSize ; RECTL rclBounds ; RECTL rclFrame ; DWORD dSignature; DWORD n Version ; DWORD nBytes; DWORD nRecords; WORD    nHandles ; WORD    sReserved; DWORD nDescription; DWORD offDescription; DWORD nPalEntries; SIZEL szlDevice; SIZEL szlMillimeters; DWORD cbPixelFormat; DWORD offPixelFormat; DWORD bOpenGL; SIZEL szMicrometers; }   ENHMETAHEADER;

Члены

iType

DWORD. Тип записи (EMR_HEADER).

nSize

DWORD. Размер структуры в байтах.

rclBounds

RECTL. Размер (в единицах длины устройства) наименьшего прямоугольника, которым можно охватить изображение, хранимое в метафайле.

rclFrame

RECTL. Размеры (в единицах длины 0,01 мм) прямоугольника, определенного в приложении, который охватывает изображение, хранимое в метафайле.

dSignature

DWORD. Сигнатура в формате двойного слова (ENHMETA_SIGNATURE) .

n Version

DWORD. Версия метафайла (для данного выпуска, 0x00010000).

nBytes

DWORD. Размер расширенного метафайла (в байтах).

nRecords

DWORD. Число записей в расширенном метафайле.

nHandles

WORD. Число дескрипторов в таблице дескрипторов расширенного метафайла. Индекс 0 применяется для дескриптора самого метафайла.

sReserved

WORD. Зарезервированное значение; должно быть равно 0.

nDescription

DWORD. Число символов в массиве, который содержит описание информационного наполнения расширенного метафайла. Устанавливается равным 0, если описание не существует.

offDescription

DWORD. Смещение от начала структуры ENHMETAHEADER до массива, который содержит описание информационного наполнения расширенного метафайла. Устанавливается равным 0, если описание не существует.

nPalEntries

DWORD. Число входов в палитре расширенного метафайла.

szlDevice

SIZEL. Разрешающая способность справочного устройства (в пикселях).

szlMillimeters

SIZEL. Разрешающая способность справочного устройства (в миллиметрах).

cbPixelFormat

DWORD. Размер последнего записанного пиксельного формата в метафайле. Если пиксельный формат установлен в справочном контексте устройства в начале записи, этот член устанавливается равным размеру структуры PIXELFORMATDESCRIPTOR.

offPixelFormat

DWORD. Смещение пиксельного формата, используемого при записи метафайла.

bOpenGL

DWORD. Устанавливается в значение TRUE, если в метафайле присутствуют какие-либо записи-OpenGL; в ином случае устанавливается в значение FALSE.

szlMicrometers

SIZEL. Размер справочного устройства (в микронах).

Пример

См. пример для функции GetEnhMetaFilePaletteEntries.

GetEnhMetaFilePaletteEntries            • Windows 98   • Windows 2000

Описание

Функция GetEnhMetaFilePaletteEntries позволяет получить из расширенного метафайла элемент необязательной палитры. В приложении перед созданием изображения и записью его в метафайл можно сохранить необязательную палитру в расширенном метафайле путем  вызова функций CreatePalette и SetPaletteEntries. Это позволяет добиться единообразия цветов при выводе изображения на устройства разных типов.

Синтаксис

UINT GetEnhMetaFilePaletteEntries( HENHMETAFILE hemf, UINT uEntries, LPPALETTEENTRY Ippe )

Параметры hemf

HENHMETAFILE Дескриптор расширенного метафайла.

uEntries

UINT. Число элементов, которые должны быть получены из палитры.

tope

LPPALETTEENTRY. Указатель на массив структур PALETTEENTRY, который должен принять цвета палитры. Если этот параметр установлен равным NULL, возвращаемое значение — число элементов в палитре. Описание структуры PALETTEENTRY приведено ниже.

Возвращаемое значение

UINT. Если параметр Ippe равен NULL и расширенный метафайл содержит необязательную палитру — число элементов в палитре расширенного метафайла; в ином случае возвращаемое значение — число скопированных элементов. Если метафайл не содержит палитру, возвращаемое значение — 0. В случае возникновения ошибки возвращаемое значение — GDIJERROR.

Включаемыйфайл

wingdi.h

См. также

CreatePalette, SetPaletteEntries

Определение PALETTEENTRY typedef struct tagPALETTEENTRYBYTE peRed;BYTE peGreen; BYTE peBlue; BYTE peFlags ; }    PALETTEENTRY;

Члены peRed

BYTE. Значение интенсивности красного цвета.

peGreen

BYTE. Значение интенсивности зеленого цвета.

peBlue

BYTE. Значение интенсивности синего цвета.

peFlags

BYTE. Определяет способ использования элемента палитры. В качестве этого члена можно установить NULL или одно из значений, перечисленных в табл. 13.10.

Таблица 13. 10. Значения члена peFlags структуры PALETTEENTRY

Значение

Описание

PC_EXPLICIT

Младшее слово логического элемента палитры обозначает аппаратный индекс палитры.

PC_NOCOLLAPSI

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

PC_RESERVED

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

Пример

В следующем примере показано, как проверить наличие палитры в расширенном метафайле и, если она существует, загрузить и создать палитру. Когда пользователь выбирает пункт меню Test!, загружается расширенный метафайл SAMPLE.EMF. Затем происходит выборка данных заголовка этого метафайла с помощью функции GetEnhMetaFileHeader и проверка числа элементов палитры. С помощью функции GetEnhMetaFUePaietteEntries извлекаются все элементы палитры, палитра создается и выбирается для контекста устройства. Затем в приложении воспроизводится метафайл в контексте устройства.

\local-sources\chapl3\13-18.txt

Setlconlnfo                               • Windows 98   • Windows 2000

Эписание

Функция Getlconlnfo позволяет выбрать информацию о пиктограмме или курсоре.

Синтаксис

BOOL Getlconlnfo( HICON Л/сои, PICONINFO piconinfo )

Параметры hlcon

HICON. Дескриптор пиктограммы или курсора. Для получения информации о стандартной системной пиктограмме или курсоре должно быть указано одно из значений, перечисленных в табл. 13.11.

Таблица 13.11. Стандартные системные пиктограммы и курсоры

Значение

Описание

DC_APPSTARTING

Курсор запуска приложения (стрелка и песочные часы)

IDC_ARROW

Курсор в форме стрелки

IDC_CROSS

Курсор в форме перекрестия

IDC_HAND

Курсор в форме руки

IDC_HELP

Курсор справки (стрелка и вопросительный знак)

IDCJBEAM

Курсор в форме двутавра

IDC_NO

Курсор "НЕТ"

IDC_SIZEALL

Четырехконечный курсор установления размеров, со стрелками вверх, вниз, влево и вправо

IDC_SIZENESW

Двухконечный курсор установления размеров, со стрелками вправо вверх и влево вниз

IDC_SIZENS

Двухконечный курсор установления размеров, со стрелками вверх и вниз

IDC_SIZENWSE

Двухконечный курсор установления размеров, со стрелками влево вверх и вправо вниз

IDC_SIZEWE

Двухконечный курсор установления размеров, со стрелками влево и вправо

IDC_UP ARROW

Курсор со стрелкой вверх

IDC_WAIT

Курсор в форме песочных часов

IDI_APPLICATION

Пиктограмма приложения

IDI_ASTERISK

Пиктограмма звездочки (буква i в круге)

IDI_EXCLAMATION

Пиктограмма восклицательного знака

IDI_HAND

Пиктограмма знака "СТОП"

IDI_QUESTION

Пиктограмма вопросительного знака

IDI_WINLOGO

Пиктограмма эмблемы Windows