Чтение палитры
Записывая изображение 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); }