Не захватывать мышь при нажатии wxToggleButton - PullRequest
0 голосов
/ 09 июня 2018

У меня есть несколько пользовательских wxToggleButtons в wxGridSizer.Я хочу иметь возможность удерживать левую мышь + двигать мышь, чтобы быстро активировать несколько кнопок (аналогичным образом отключать их, когда правая мышь нажата).

Я экспериментировал с различными привязками для wxEVT_ENTER_WINDOW, wxEVT_LEFT_DOWN и т. Д. ...Основная проблема заключается в том, что wxEVT_ENTER_WINDOW (также wxEVT_LEAVE_WINDOW) не запускается, когда мышь не работает, поэтому я предполагаю, что первая кнопка каким-то образом захватила мышь.Очевидное wxWindow :: ReleaseMouse () не является ответом, работает другой механизм.

Я также быстро взглянул на подклассы wxMouseEventsManager, но не смог заставить его работать с планом возвратаfalse в MouseDragBegin ().Я не уверен, является ли это подходящим подходом здесь.

Как отключить это поведение при захвате мыши в моем подклассе wxToggleButton?

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

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

0 голосов
/ 09 июня 2018

После дальнейших исследований я обнаружил, что виноват не wxWidgets, а Windows.

Используя Spy ++ и приложение для отображения символов, я нажал левую кнопку мыши в небольшом текстовом элементе управления «Юникод».Затем перетащил его, удерживая нажатой кнопку мыши.
Кнопка «Выбрать» вообще не получала никаких сообщений.

Таким образом, в некоторых случаях окно блокирует все сообщения для других окон.

...