【问题标题】:Find which MFC child window would receive a mouse click查找哪个 MFC 子窗口会收到鼠标点击
【发布时间】:2010-05-19 17:02:39
【问题描述】:

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

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

【问题讨论】:

    标签: mfc winapi mouse hook mouseevent


    【解决方案1】:

    也许WindowFromPoint API 函数符合要求?

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

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

    还有几个,它们的行为略有不同:ChildWindowFromPointChildWindowFromPointExRealChildWindowFromPoint

    【讨论】:

    【解决方案2】:

    我已经很久没有做 MFC 了,但我认为 HitTest 是您正在寻找的术语。快速浏览 MSDN 表明,大多数窗口都实现了 HitTest 函数,该函数返回有关特定点的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      相关资源
      最近更新 更多