Событие, когда курсор меняет положение текстового поля wxWidgets?
В wxWidgets как я могу определить, когда позиция курсора изменилась в wxTextCtrl? Я посмотрел на руководство и не смог найти ни одного события, связанного с ним, но, возможно, есть другой способ, который я пропустил.
2 ответа
Поскольку wxTextCtrl наследуется от wxWindow, вы можете связать следующие события мыши с этим элементом управления: http://docs.wxwidgets.org/2.8/wx_wxmouseevent.html
Я думаю, что вас интересует EVT_MOTION(func). Однако я никогда не использовал это событие, поэтому не могу с уверенностью сказать, вызывается ли оно только при движении мыши внутри окна, к которому оно привязано (что было бы более интересным), или при глобальном движении мыши.
Я вполне уверен, что он имеет в виду курсор точки вставки, и в этом случае не происходит событие wxWidgets для изменения его положения. Кроме того, в то время как wxTextCtrl::SetInsertionPoint() и wxTextCtrl::SetInsertionPointEnd() являются виртуальными методами, которые могут быть перезаписаны, это позволяет отловить только ситуации, когда они изменяются программно, а не с помощью различных действий в зависимости от участия собственной платформы (что, вероятно, является причиной этого события). не существует в wxWidgets в настоящее время).
Лучшее решение, которое я могу придумать для переносного отслеживания всех изменений точки вставки прямо сейчас, - это непрерывный опрос позиции точки вставки с помощью таймера. Вы можете получить свой собственный wxTextCtrl с этой встроенной функциональностью, которая генерирует ваше собственное пользовательское событие, если вам нужна эта функция в нескольких местах.
Моя личная рекомендация состоит в том, чтобы найти альтернативное решение вашей проблемы, которое не требует постоянного знания положения точки вставки. Вы уверены, что вам действительно нужно знать положение точки вставки, а не только когда изменяется значение в текстовом элементе управления?