Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы

         

Чтение палитры


Записывая изображение DDB в формате CF_BITMAP в Clipboard, приложения обычно сохраняют там же и цветовую палитру в формате CF_PALETTE. Если ваше приложение работает с многоцветными изображениями, оно должно извлекать из Clipboard не только битовое изображение, но и палитру.

Действия, необходимые для чтения палитры, аналогичны действиям, выполняемым при чтении DDB:

Открыть Clipboard функцией OpenClipboard

Вызвать функцию GetClipboardData, передав ей через единственный параметр константу CF_PALETTE, и проверить возвращенное значение. Если функция вернула NULL, Clipboard не содержит данных в формате CF_PALETTE. Ненулевое значение является идентификатором палитры, который должен использоваться для выбора и реализации палитры

Закрыть Clipboard функцией CloseClipboard

Следующий фрагмент кода демонстрирует извлечение палитры, ее выбор и реализацию после извлечения изображения DDB:

hBitmap = (HBITMAP)GetClipboardData(CF_BITMAP); if(hBitmap != NULL) { hPal = (HPALETTE)GetClipboardData(CF_PALETTE); if(hPal) { hOldPal = SelectPalette(hdc, hPal, FALSE); RealizePalette(hdc); } DrawBitmap(hdc, 0, 0, hBitmap); }



Содержание раздела