如何在鼠标点找到MFC控件的手柄,但位于其他控件下

How to find handle to a mfc control at mouse point but lie under other control?

本文关键字:控件 于其他 其他 鼠标 MFC      更新时间:2023-10-16

我想在鼠标结束时找到控制手柄,但仅在上面找到控件(使用WindowFromPointChildWindowFromPoint,等不起作用)。

任何建议?

您可以使用 GetNextWindow win32 api呼叫来检索Z-order的下一个窗口,该窗口位于此下方。

算法可能是这样的:

  1. 获得HWND hwnd = ChildWindowFromPoint(hwndParent, point);的初始窗口
  2. 如果 hwnd被寻找窗口,请停止
  3. hwnd = GetNextWindow(hwnd, GW_HWNDNEXT);
  4. 如果hwnd包含point,请转到2
  5. 否则转到3。

另一种方式 - 只需在对话框上枚举所有控件或查看,将其矩形和手柄存储在某些容器中,然后手动检查点。