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


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


WINCOMMCTRLAPI BOOL WINAPI ImagcList_DragEnter(IIWND hwndLock,

int x, int y);

Эта функция запрещает обновление указанного окна во время выпол­нения операции «drag-and-drop» и прорисовывает перемещаемое изобра­жение в промежуточных позициях (до того, как будет отпущена клавиша мыши). В некотором смысле можно сказать, что эта функция делает изображение курсором мыши (конечно, нельзя понимать это буквально, сходство чисто внешнее). Первый аргумент этой функции понятен -хэндл окна, обновление которого запрещается. Этим окном является то окно, в котором производится перемещение изображения. Второй и третий аргументы определяют координаты той точки, в которой необхо­димо прорисовать изображение. ВНИМАНИЕ! В данном случае необхо­димо указывать координаты оконные, а не координаты в рабочей области окна. Таким образом, до обращения к этой функции необходимо опреде­лить ширину границы окна, высоту заголовка и, при необходимости, ширину полосы меню. В демонстрационной программе это сделано при

176

функции GetSystemMetrics(). Рекомендую читателю изучить эту функцию самостоятельно.

Функция ImageListJDragMove() описана следующим образом:

WINCOMMCTRLAPI BOOL WINAPI I mage I ist_DragMove(int x, int y);

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

Последней функцией, обеспечивающей «drag-and-drop», является lmageList_Endnrag(). Эта функция завершает перемещение, но не разре­шает обновление окна и не производит прорисовку перемещенного изображения. Для разрешения обновления окна необходимо вызвать функцию ImageList_DragLeave(), передав ей в качестве аргумента хэндл окна, а затем прорисовать изображение, например, с помощью функции ImageList Draw().

Л теперь, как всегда, демонстрационная программа. В этой программе при создании окна производится прорисовка двух икон в левой верхней части рабочей области. Иконки могут быть скопированы в другое место при использовании операции «drag-and-drop». Думаю, читателю не соста­вит труда при необходимости изменить эту программу так, чтобы иконки не копировались, а перемещались.




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



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