2011-02-24 17 views
3

我知道如果該控件位於可見窗口中,WindowFromPoint可用於獲取控件的句柄。我的要求是獲取控件的詳細信息,即使應用程序的窗口不在前臺(它不會被最小化,只是它可能位於另一個窗口的後面)。是否有WINAPI功能可以爲我做這個?給定x,y點,如何獲得窗口句柄的控件不存在於前景窗口?

如果沒有,可以有人提出一個辦法,我怎麼能去這樣做,未能達到: 1枚舉所有控件在一個特定的背景窗口, 2.然後讓他們的界限, 3。然後比較這些邊界是否包含x,y座標?

回答

0

也許WM_NCHITTEST可以提供幫助嗎?參見舊的新事物上的例如WM_NCHITTEST is for hit-testing, and hit-testing can happen for reasons other than the mouse being over your window

WM_NC­HIT­TEST消息並不意味着鼠標在您的窗口;它只是意味着有人問:「如果你的窗口中的鼠標,它會做什麼?」

+0

感謝您的回覆! DefWindowProc函數返回枚舉中的一個值(對應於控件類型)以響應WM_NCHITTEST消息。我實際上需要控制手柄本身。 – Satyajit 2011-02-24 11:10:29

1

您在尋找GetWindow的API函數,可用於枚舉所有窗口,然後再枚舉GetWindowRect函數。

+0

是的,我意識到這些功能,使用它們的蠻力方法是我的最後手段。雖然我寧願使用EnumChildWindows而不是GetWindow :)編輯:GetWindow的GW_HWNDNEXT參數看起來很有趣!讓我看看我是否可以利用這一點。謝謝你的提示。 – Satyajit 2011-02-24 11:18:05

+0

我嘗試使用GetWindow並傳遞GW_HWNDNEXT,但正如文檔所示,我得到的是兄弟窗口,而不是直接位於最頂層窗口下方的窗口。我最終放棄並枚舉了所有的控件,並使用GetWindowRect匹配它們。 – Satyajit 2011-02-24 17:02:36