所以,我有一个 MFC 程序的插件。我正在使用鼠标事件 Hook (来自 SetWindowsHookEx)来捕获点击。主机应用程序可以打开任意数量的(可能重叠的)子窗口,但我只想拦截特定子窗口中的点击。
有没有办法在 hook proc 中找出哪个子窗口将处理点击?我想这类似于枚举所有子窗口,查看 Z 顺序,但我对 MFC/Win32 库非常不熟悉,而且我找不到任何关于如何枚举所有子窗口并计算哪个是最顶层。
最佳答案
也许是 WindowFromPoint
API 功能是否符合要求?
Retrieves a handle to the window that contains the specified point.
该文档没有明确提及 Z 顺序,但我可以根据第一手经验向您保证,“包含”隐含地意味着前面没有其他窗口。
还有几个,行为略有不同:ChildWindowFromPoint
, ChildWindowFromPointEx
和 RealChildWindowFromPoint
.
关于mfc - 查找哪个 MFC 子窗口将收到鼠标单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2867726/