Операционная система Microsoft Windows 3.1 для программиста -том 1


Сообщения для внутренней области окна - часть 2


Это сообщения WM_LBUTTONDBLCLK, WM_MBUTTONDBLCLK и WM_RBUTTONDBLCLK.

Двойным щелчком (double click) называется пара одиночных щелчков, между которыми прошло достаточно мало времени. Изменить значение интервала, в течение которого должны поступить два одиночных щелчка, чтобы система распознала их как один двойной щелчок, проще всего при помощи стандартного приложения Windows с именем Control Panel.

Еще одно условие распознавания двойного щелчка менее очевидно и заключается в том, что за интервал между двумя одиночными щелчками курсор мыши не должен переместиться на слишком большое расстояние. С помощью функции GetSystemMetrics в Windows версии 3.1 вы можете определить размеры прямоугольника, внутри которого должны быть сделаны два щелчка мышью, для того чтобы они могли распознаваться как один двойной щелчок. Для этого ей надо передать в качестве параметра значения SM_CXDOUBLECLK (ширина прямоугольника) и SM_CYDOUBLECLK (высота прямоугольника).

Кроме всего этого, для того чтобы окно могло получать сообщения о двойном щелчке мышью, при регистрации класса окна необходимо определить стиль класса окна CS_DBLCLKS.

Если выполнить двойной щелчок левой клавишей мыши в окне, для класса которого не определен стиль CS_DBLCLKS, функция окна последовательно получит следующие сообщения:

WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDOWN WM_LBUTTONUP

Если же сделать то же самое в окне, способном принимать сообщения о двойном щелчке, функция окна в ответ на двойной щелчок получит следующую последовательность сообщений:

WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK WM_LBUTTONUP

Как нетрудно заметить, перед сообщением WM_LBUTTONDBLCLK функция окна получит сообщение WM_LBUTTONDOWN. Дело в том, что после первого щелчка Windows еще не знает, будет ли следом обычный или двойной щелчок, - все зависит от интервала времени и перемещения курсора.

Обычно правильно спроектированное приложение по двойному щелчку выполняет ту же самую операцию, которую оно бы выполнило по второму щелчку из серии.




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



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