我有一个应用程序需要覆盖另一个应用程序的窗口。随着重叠的移动,我需要我的应用程序随之移动。
我正在使用以下代码来获取窗口并将我的窗口定位在它上面。
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。我遇到的问题是覆盖将焦点从覆盖的窗口中移开。我只希望我的叠加层位于此窗口的顶部,但不会窃取焦点。如果用户单击覆盖的窗口,我希望它像放置覆盖之前那样工作。但是,如果用户单击叠加层,我需要在叠加层上捕获鼠标。
有任何想法吗?谢谢