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


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


Привлекательность использования списков изображений повышает еще одно обстоятельство. При использовании списков возможно исполь­зование специальных функций, позволяющих пользователю перемещать изображения (drag-and-drop) на экране: во-первых, с минимальными затратами на написание нового кода; во-вторых, без заметного мерцания.

Таблица 42. Флаги прорисовки отдельного изображения в списке изображений

Значение

ILD_NORMAL

ILD TRANSPARENT

ILD_BLEND25 ILD_BLEND50

ILD_MASK

ILD IMAGK

ILD OVERLAYMASK

ILD SELECTED

ILD FOCUS

ILD BLEND

0x0002 0x0004

0x0010

0x0020

OxOFOO

ILD BLEND50 ILD BLEND25 ILD~BLEND50

Обычное копирование изображения Каждый белый бит маски заставляет соответствующим бит изображения прорисовываться как прозрачный Снижение интенсивности цветов изобра­жения на 25 %

Снижение интенсивности цветов изобра­жения на 50 % Прорисовка маски Прорисовка изображения

175

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

WINCOMMCTRLAPI BOOL WINAPI ImageList_BcginDrag(IMAGELIST himlTrack,

int iTrack, int dxHotspot, int dyHotspot);

В число аргументов этой функции входят хэндл списка изображений, индекс перемещаемого изображения и координаты «горячего пятна» (hot spot'a - о проблемы перевода!) внутри изображения. Горячее пятно - это пиксель, по которому определяется точное положение изображения на экране. Обычно горячее пятно определяется таким образом, чтобы оно совпадало с горячим пятном курсора мыши. С этим горячим пятном нам еще предстоит помучиться.

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

Следом за функцией ImageList_BeginDrag() обычно используется функция ImageList_DragEnter(). Описание этой функции можно найти в файле commctrl.h:




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



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