让鼠标点击不通过禁用组件的最佳方法是什么?

时间:2011-10-10 22:09:49

标签: windows winapi mouse mouseevent

我正在为我的应用程序使用常见的Windows控件,如“BUTTON”和“EDIT”。在某些情况下,我想要禁用组件,因此我使用EnableWindow函数使组件看起来已禁用且无法接收事件。

然而问题是禁用的组件不仅阻止鼠标单击事件 - 而是将它们传递给它下面的组件。有没有办法阻止鼠标点击事件通过禁用的组件?或者替代地,一种检查这种情况的简单方法并丢弃这些事件?

我想在顶部制作透明窗口,但这听起来有些过于复杂,看起来很琐碎。我还想在接受事件之前对每个容器的子项进行鼠标坐标测试。 有没有更好的方法?我已经在我的WndProc中有一个自定义区域(我将按钮类子类化),以便在有帮助的情况下捕获鼠标按钮事件。

提前致谢!

1 个答案:

答案 0 :(得分:1)

来自EnableWindow documentation

  

禁用输入时,窗口不会接收鼠标点击和按键等输入。

因此,根据定义,当窗口被禁用时,它不会接收鼠标点击。您所看到的是预期的,预期的行为,我认为没有任何方法可以改变它。

我不确定您为什么要尝试培训您的用户点击已禁用的内容(每个其他Windows应用都会忽略这些点击,因此您正在训练您的用户被您的应用或这个星球上的每个其他应用程序),但如果你真的想支持这个,最简单的方法可能是将按钮放在一个与按钮大小完全相同的面板内。