Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 145


172

монохромного bitmap'a, который содержит маски. В случае немаскиро­ванного списка третий аргумент игнорируется.

Описание функции ImageList_AddMasked() приведено ниже:

WINCOMMCTRLAPI int WINAPI ImageList_AddMasked(HIMAGELIST himl,

HBITMAP hbmlmage, COLORREF crMask);

Эта функция действует почти так же, как и предыдущая, но маска ге­нерируется автоматически. Для генерации маски необходимо задать цвет. Если в изображении встречается пиксель указанного цвета, то цвет этого пикселя заменяется на черный, а соответствующий бит маски - на 0. В результате, при прорисовке изображения пиксели указанного цвета становят­ся прозрачными. Аргументы этой функции также очевидны. Первый - хэндл списка изображений, второй - хэндл включаемого в список изображения, третий - цвет пикселей, которые необходимо сделать прозрачными, при прорисовке.

Для добавления в список иконки или курсора используется макрос ImageList_AddIcon(), первым аргументом которого необходимо указать хэндл списка изображений, а вторым - хэндл добавляемой иконки или добавляемого курсора. Макрос возвращает индекс добавленного изобра­жения.

При необходимости программа может создать новую иконку или кур­сор, используя изображение и маску из списка изображений. Для этой цели необходимо использовать функцию ImageList_GetIcon(). Её описа­ние приведено ниже:

WINCOMMCTRLAPI HICON WINAPI ImageList_GetIcon(HIMAGELIST himl,

int i, UINT nags);

Первый аргумент этой функции - хэндл списка изображений. Второй -индекс изображения, на основе которого будет создана иконка или кур­сор. Третий аргумент - флаги прорисовки, которые можно найти в табли­це, приведенной при описании функции ImageList_Draw().

Функция возвращает хэндл созданной иконки или курсора.

К этому моменту мы научились добавлять изображения в список. А для удаления изображения нужно вызвать функцию ImageList_Remove(), описанную так:

WINCOMMCTRLAPI BOOL WINAPI ImageList_Removc(HIMAGELIST himl,

int i);

173

Автор уверен, что даже не заглядывая дальше, читатель догадался, что первым аргументом является хэндл списка изображений, а вторым -индекс удаляемого изображения. Если вместо индекса изображения подставить -1, то функция удалит все изображения из списка, но не удалит сам список. Для удаления всех изображений из списка можно воспользоваться макросом ImageList_RemoveAH(), единственным аргу­ментом которого является хэндл списка изображений.




Начало  Назад  Вперед



Книжный магазин