我在wxGridSizer中有许多自定义wxToggleButtons。 我希望能够保持leftmouse +移动鼠标以快速激活多个按钮(类似地,当鼠标右键停止时将其停用)。
我在wxEVT_ENTER_WINDOW,wxEVT_LEFT_DOWN等上尝试了不同的绑定...基本问题是鼠标停止时没有触发wxEVT_ENTER_WINDOW(也就是wxEVT_LEAVE_WINDOW),所以我假设第一个按钮以某种方式捕获了鼠标。显而易见的wxWindow :: ReleaseMouse()不是答案,一些不同的机制在起作用。
我还快速浏览了wxMouseEventsManager的子类化,但我无法使用它在MouseDragBegin()中返回false的计划。我不确定这是否是合适的方法。
如何在我的wxToggleButton子类中禁用此鼠标捕获行为?
答案 0 :(得分:0)
经过更多的研究,我发现这不是wxWidgets,而是Windows的责任。
使用Spy ++和角色地图应用程序,我在小的“Unicode”文本控件中按了鼠标左键。然后在按住鼠标按钮的同时拖动它。
“选择”按钮根本没有收到任何消息。
因此,在某些情况下,窗口会阻止其他窗口的所有消息。
答案 1 :(得分:0)
当您将鼠标按在本机按钮上时,它会捕获鼠标并仅在您释放鼠标按钮时将其释放。有可能强行打破捕获,但它确实不是一个好主意,会导致尴尬和不寻常的UI,因为无论你是否意识到,用户习惯于原生按钮行为。