Как правильно использовать onmousedown / onmouseup? - PullRequest
2 голосов
/ 20 марта 2009

Всякий раз, когда я пишу код обработки мыши, модель onmousedown / onmouseup / onmousemove всегда вынуждала меня создавать излишне сложный код, который все равно заканчивался бы, вызывая всевозможные ошибки пользовательского интерфейса.

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

Есть ли ПРАВИЛЬНЫЙ способ написания кода мыши или вся модель имеет недостатки?

Ответы [ 2 ]

2 голосов
/ 20 марта 2009

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

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

0 голосов
/ 20 марта 2009

Я не уверен, в какой среде вы пытаетесь отследить кнопки мыши, но лучший способ справиться с этим - иметь прослушиватель мыши, который отслеживает mmupup 100% времени после того, как вы обнаружили mousedown.

Таким образом, не имеет значения, в какой области экрана пользователь отпускает кнопку мыши. Он сбрасывается независимо от того, где это происходит.

...