我有一個應用程序需要覆蓋另一個應用程序的窗口。隨着覆蓋移動,我需要我的應用程序與它一起移動。C# - Windows窗體 - Windows 7 - 覆蓋另一個應用程序的窗口
我正在使用下面的代碼來獲取窗口並將窗口放在它上面。
public static void DockToWindow(IntPtr hwnd, IntPtr hwndParent)
{
RECT rectParent = new RECT();
GetWindowRect(hwndParent, ref rectParent);
RECT clientRect = new RECT();
GetWindowRect(hwnd, ref clientRect);
SetWindowPos(hwnd, hwndParent, rectParent.Left,
(rectParent.Bottom - (clientRect.Bottom -
clientRect.Top)), // Left position
(rectParent.Right - rectParent.Left),
(clientRect.Bottom - clientRect.Top),
SetWindowPosFlags.SWP_NOZORDER);
}
我還將form.TopMost設置爲true。 我遇到的問題是疊加層將焦點從覆蓋窗口中移開。 我只是想讓我的覆蓋層坐在這個窗口的頂部,而不是偷取焦點。如果用戶點擊覆蓋窗口,我希望它能夠像放置覆蓋之前一樣工作。 但是,如果用戶點擊疊加層,我需要在覆蓋層上捕獲鼠標。
任何想法? 感謝
我試過了,它確實有效,但是當我移動覆蓋窗口時它仍然在偷竊焦點。我有一個解決方案。 –
@JimBucciferro太好了!您應該將修復作爲自我回答發佈給其他人稍後閱讀,並且還要編輯您的問題以在移動時也包括無焦點要求。 – Henrik
我的解決方案可以工作,但它將覆蓋層保留在所有窗口的頂部,而不僅僅是我要覆蓋的窗口。 –