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


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


Для замены изображения в списке служит функция ImageList_Replace(). Её описание находим в файле commctrl.h:

WINCOMMCTRLAPI BOOL WINAPI ImagcList_Replace(HIMAGFLLIST him],

int i,

HBITMAP hbmlmage, HBITMAP hbmMask);

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

Очередная функция - ImageList_ReplaceIcon() - описана так:

WINCOMMCTRLAPI int WINAPI ImageList_RcplaceIcon(HIMAGELIST himl,

int i. HICON hicon);

Нужно ли описывать аргументы этой функции?

Если в функции ImageEist_ReplaceIcon() второй аргумент заменить на -1, то иконка или курсор будут не замещать старое изображение, а добав­ляться в список. Этот нюанс используется в макросе ImageList_ AddlconQ, аргументами которого являются хэндл списка изображений и хэндл добавляемой иконки или курсора.

Вполне вероятно, что если второй аргумент функции ImageList_Replace() равен -1, то изображение не замещает старое, а добавляется. Проверку этой гипотезы я оставляю читателю.

Для того чтобы прорисовать изображение, хранящееся в списке, необ­ходимо использовать функцию ImageListJDraw(). Вполне понятно, что для прорисовки изображения вызывается что-то типа функции BitBlt(), которая требует два контекста устройства, координаты и прочее. Вспом­ним, что контекст устройства, в котором хранится список изображений, у нас ' есть. Координаты отдельного изображения моментально вычисляются по его индексу. И что остается? Хэндл контекста, на кото-

174

рый будет копироваться изображение, координаты в этом контексте и флаги прорисовки.

Функция ImageList_Draw() имеет следующий прототип:

WINCOMMCTRLAPI BOOL WINAPI ImageList_Draw(HIMAGELIST himl,

int i,

HOC hdcDst, intx, int y, UINT (Style);

Сравните аргументы этой функции с теми, наличие которых мы вычислили чуть выше. На всякий случай поясню. Первый аргумент -хэндл списка изображений, второй - индекс изображения, третий - хэндл контекста, на который будет копироваться изображение, четвертый и пятый - координаты в этом контексте, начиная с которых будет скопиро­вано изображение, и, наконец, шестой - именно флаги прорисовки. Они приведены в табл. 42.




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



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