首页 > 解决方案 > 单击 wxToggleButton 时不捕获鼠标

问题描述

我在 wxGridSizer 中有许多自定义 wxToggleButtons。我希望能够按住鼠标左键 + 移动鼠标以快速激活多个按钮(类似地在鼠标右键按下时停用它们)。

我已经在 wxEVT_ENTER_WINDOW、wxEVT_LEFT_DOWN 等上尝试了不同的绑定......根本问题是鼠标按下时不会触发 wxEVT_ENTER_WINDOW(也是 wxEVT_LEAVE_WINDOW),所以我假设第一个按钮以某种方式捕获了鼠标。明显的 wxWindow::ReleaseMouse() 不是答案,一些不同的机制在起作用。

我还快速查看了 wxMouseEventsManager 的子类化,但我无法让它与在 MouseDragBegin() 中返回 false 的计划一起工作。我不确定这是否是适当的方法。

如何在我的 wxToggleButton 子类中禁用此鼠标捕获行为?

标签: c++wxwidgets

解决方案


经过更多研究,我发现这不是 wxWidgets,而是 Windows 的错。

使用 Spy++ 和字符映射应用程序,我在小的“Unicode”文本控件中按下鼠标左键。然后在按住鼠标按钮的同时拖动它。
“选择”按钮根本没有收到任何消息。

因此,在某些情况下,一个窗口会阻止其他窗口的所有消息。


推荐阅读