如何在鼠标点找到mfc控件的句柄但是处于其他控制之下?

时间:2012-10-18 11:29:32

标签: c++ winapi visual-c++ mfc window

我希望当鼠标悬停时,找到控制手柄位于其他位置,但它只能找到上面的控件(使用WindowFromPointChildWindowFromPoint等不起作用)。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以使用GetNextWindow Win32 API调用来检索Z-Order中的下一个窗口,该窗口位于此窗口之下。

算法可能是这样的:

  1. HWND hwnd = ChildWindowFromPoint(hwndParent, point);
  2. 获取初始窗口
  3. 如果寻求hwnd窗口,请停止
  4. hwnd = GetNextWindow(hwnd, GW_HWNDNEXT);
  5. 如果hwnd包含point,请转到2
  6. 否则请转到3。
  7. 另一种方法 - 只需枚举对话框或视图中的所有控件,将它们的矩形和句柄存储在某个容器中,然后手动进行点检查。