1

マウスオーバー時にコントロールハンドルが他の下にあることを見つけたいのですが、上のコントロールしか見つかりませんでした( 、 などを使用WindowFromPointChildWindowFromPointても機能しません)。

なにか提案を?

4

1 に答える 1

2

GetNextWindowWin32 API 呼び出しを使用して、このウィンドウの下にある Z オーダーの次のウィンドウを取得できます。

アルゴリズムは次のようになります。

  1. 初期ウィンドウを取得するHWND hwnd = ChildWindowFromPoint(hwndParent, point);
  2. hwndウィンドウを探している場合は停止します
  3. hwnd = GetNextWindow(hwnd, GW_HWNDNEXT);
  4. hwndを含む場合はpoint2 へ
  5. それ以外の場合は 3 に進みます。

別の方法 - ダイアログまたはビューのすべてのコントロールを列挙し、それらの四角形とハンドルをコンテナに保存し、手動でポイント チェックを行います。

于 2012-10-18T11:47:45.350 に答える