在 wxWidgets 中,如何检测 wxTextCtrl 中光标位置何时发生变化?我查看了手册,找不到与它相关的任何事件,但也许我错过了另一种方式。
2 回答
由于 wxTextCtrl 继承自 wxWindow,您可以将以下鼠标事件与该控件绑定: http ://docs.wxwidgets.org/2.8/wx_wxmouseevent.html#wxmouseevent
我认为您感兴趣的是 EVT_MOTION(func)。但是,我从来没有使用过这个事件,所以我不能确定它是只在它绑定到的窗口内的鼠标移动(这将是更有趣的方法)或全局鼠标移动时引发的。
我相当肯定他的意思是插入点光标,在这种情况下,没有 wxWidgets 事件来改变它的位置。此外,虽然 wxTextCtrl::SetInsertionPoint() 和 wxTextCtrl::SetInsertionPointEnd() 是可以被覆盖的虚拟方法,但这仅捕获以编程方式更改而不是通过各种操作更改的情况,具体取决于本机平台参与(这可能是此事件的原因目前在 wxWidgets 中不存在)。
我现在能想到的便携式捕获所有插入点更改的最佳解决方案是使用计时器连续轮询插入点位置。如果您在多个位置需要此功能,您可以使用内置的此功能派生您自己的 wxTextCtrl,该功能会生成您自己的自定义事件。
我个人的建议是为您的问题寻找一种不需要始终知道插入点位置的替代解决方案。你确定你真的需要知道插入点的位置,而不仅仅是文本控件中的值发生变化吗?