2012-10-20 18 views
0

我的應用程序需要顯示一個信息氣球指向upper-right角落[x]按鈕指示窗口具有通過單擊pointed [x]按鈕關閉。獲取非客戶「關閉」按鈕的hWnd [X]的(Win32)

因此,我需要獲取[x]按鈕hWnd或者如果知道其未記錄的資源ID。你們是否知道如何做到這一點與普通win32?

我試圖處理非客戶端元素的指標等的替代品,但他們都放棄unconsistent結果(考慮我的應用程序運行從W2KW8

感謝

+2

你可以通過發送WM_NCHITTEST消息來探測它。當你獲得HTCLOSE時,你發現了關閉字形。 –

+0

既然你說你需要支持Windows 2000,你不能使用'WM_GETTITLEBARINFOEX'消息。相反,您必須使用Active Accessibility來查找Close對象,然後詢問其「accLocation」。 –

+0

WM_GETTITLEBARINFOEX給出了不可靠的信息,我從來沒有使用過Active Accessibility,我一直在觀察它,看起來這些MS複雜的API;任何提示在哪裏得到一些代碼示例做類似的事情? – Pat

回答

3

關閉按鈕沒有窗口,它沒有單獨的HWND。作爲非客戶區域的一部分,它可能與底層WindowProc一起被繪製爲可能的其他元素。

+1

你怎麼知道的?請不要誤解我的意思;我不是在挑戰你。但是我想知道,如果您在調試器上閱讀代碼或僅僅是您的猜測,您的可能評論是否發佈在某處。謝謝 – Pat

+1

這很簡單。 Visual Studio附帶'Common7 \ Tools \ spyxx.exe'它枚舉所有窗口並向您顯示,您可以通過['EnumWindows']執行相同的操作(http://msdn.microsoft.com/zh-cn/library/窗戶/桌面/ ms633497%28V = vs.85%29.aspx)。你會看到它不是一個真正的窗口。 –