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

         

Запись палитры


Если приложение должно уметь записывать в Clipboard многоцветное изображение DIB, вместе с DDB необходимо записать в Clipboard цветовую палитру, используемую этим изображением. Напомним, что файл в формате DIB может содержать наряду с битами изображения специальную таблицу цветов, на базе которой создается цветовая палитра. Вы можете получить дополнительную информацию о работе с DIB и цветовыми палитрами из 14 тома "Библиотеки системного программиста".

Для записи цветовой палитры в Clipboard вам достаточно передать идентификатор палитры функции SetClipboardData, указав этой функции в качестве первого параметра константу CF_PALETTE:

if(hPal) SetClipboardData(CF_PALETTE, hPal);

Разумеется, перед записью палитры необходимо открыть Clipboard.

Если палитра и DDB создаются на базе DIB, и ваше приложение записывает и то, и другое в Clipboard, нужно выполнить следующие действия:

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

Сбросить содержимое Clipboard функцией EmptyClipboard

Вызвать функцию SetClipboardData, передав ей через первый параметр константу CF_BITMAP, а через второй - идентификатор DDB

Вызвать функцию SetClipboardData, передав ей через первый параметр константу CF_PALETTE, а через второй - идентификатор цветовой палитры

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

Палитра "сопровождает" DDB, обеспечивая приложения таблицей цветов, необходимой для правильного отображения DDB.

Передав идентификатор палитры функции SetClipboardData, вы должны "забыть" про него, так как он уже не принадлежит вашему приложению.



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