идентифицируя двойной щелчок мышью или два одиночных щелчка на основе координат - PullRequest
0 голосов
/ 05 августа 2011

Я отправляю щелчки мыши на элемент управления ActiveX в C ++ один за другим (я использую AutoDesk Design Review (система САПР) и отправляю щелчки, чтобы нарисовать дугу).

Единственная проблема, с которой я столкнулся, заключается в том, что если два щелчка расположены рядом друг с другом, это регистрируется как двойной щелчок. Есть ли в Windows значение, определяющее, делают ли координаты щелчков двойным щелчком мыши?

например. Если координаты расположены на расстоянии менее 10 пикселей, это двойной щелчок, в противном случае - два щелчка.

Я не могу перехватить щелчок или отменить событие щелчка в элементе управления ActiveX, поэтому мне нужно остановить его до начала.

Большое спасибо

Alex

Ответы [ 2 ]

4 голосов
/ 05 августа 2011

API Windows предоставляет способ определения времени двойного щелчка и прямоугольника двойного щелчка:

  • GetDoubleClickTime(), чтобы получить время двойного щелчка.
  • GetSystemMetrics() с индексом SM_CXDOUBLECLK для получения ширины прямоугольника.
  • GetSystemMetrics() с индексом SM_CYDOUBLECLK для получения высоты прямоугольника.

Согласно документации MSDN для ввода с мыши :

Дважды щелкните сообщения

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

Этой информации должно быть достаточно для обнаружения двойных щелчков мыши.

0 голосов
/ 05 августа 2011

Значение, по которому Windows определяет, являются ли два щелчка одним двойным или двумя одиночными щелчками, является временем. Я не думаю, что в API есть что-то, что отличает их по относительным координатам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...