找到哪个MFC子窗口将收到鼠标单击

时间:2010-05-19 17:02:40

标签: mfc winapi mouse hook mouseevent

所以,我有一个MFC程序的插件。我正在使用鼠标事件挂钩(来自SetWindowsHookEx)来捕获点击次数。主机应用程序可以打开任意数量(可能重叠)的子窗口,但我只想拦截特定子窗口中的点击。

有没有办法在钩子proc中找出哪个子窗口会处理点击?我想这类似于枚举所有子窗口,看着Z顺序,但我对MFC / Win32库非常不熟悉,而且我无法找到关于如何枚举所有子节点并计算哪个是最上面。

2 个答案:

答案 0 :(得分:4)

也许WindowFromPoint API函数符合要求?

  

检索包含指定点的窗口的句柄。

文档没有明确提到Z排序,但我可以从第一手经验向您保证“包含”隐含意味着没有其他窗口在前面。

还有其他一些行为略有不同:ChildWindowFromPointChildWindowFromPointExRealChildWindowFromPoint

答案 1 :(得分:0)

我做MFC已经很久了,但我认为HitTest是你要找的术语。通过MSDN快速浏览表明大多数窗口都实现了一个返回特定点信息的HitTest函数。