我有一个应用程序需要覆盖另一个应用程序的窗口。随着覆盖移动,我需要我的应用程序与它一起移动。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
我的解决方案可以工作,但它将覆盖层保留在所有窗口的顶部,而不仅仅是我要覆盖的窗口。 –