我正在寫一個自定義的工具提示窗口(我們稱之爲A)。它必須顯示在另一個窗口(我們稱之爲B)和:如何設置另一個窗口?
不要從B偷的焦點
而用戶繼續不要失去在z順序的位置到B輸入到乙
A必須收到WM_NCHITTEST消息(ⅰ使用它們跟蹤在非活動窗口的鼠標位置)
當帶過來乙另一個窗口,就必須在使爲好;情況B被覆蓋,不可見,但會顯示一個應該儘量避免
我曾嘗試使用SetWindowPos功能後,由乙方這樣調用它的包裝(A中所定義)來實現這一點:
public void SetLocation(Point location, IntPtr UnderHandle)
{
SetWindowPos(Handle, HWND_TOPMOST, location.X, location.Y, Width, Height,
SetWindowPosFlags.DoNotActivate);
}
(從pinvoke.net SetWindowPosFlags)
結果滿足幾乎所有我除了LST一個需求。
有什麼我也嘗試:
HWND_TOP:在活動窗口B不帶來窗A;更確切地說:在通話之後,它確實將窗口A帶到前景,但是然後B轉到前景;在實際中,當B被標題欄移動並且鼠標按鈕被按下時,窗口A被繪製在它上面 - 但是在沒有按下鼠標按鈕的時刻
使用UnderHandle作爲第一參數調用SetWindowPos,在嘗試「窗口中的下把窗口B」產生同樣的結果
SetWindowPos應如何USD正確地實現預期的結果 - 或者,如何可以窗口B的在ZORDER位置進行監控,以迫使窗口中的到它旁邊的位置(從前景窗口)?
謝謝!根據你的建議,我設定A.Owner = B沒有得到我想要的。 – Srv19