C# 如何检查外部窗口的一部分是否覆盖
我正在为扑克明星们建立一个HUD来显示一些相关的统计数据 覆盖是一个UserControl:Form,我通过winapi将其从statusbar和Alt+T中隐藏。 事实上,它有一个最高的,总是在扑克桌上,但这会导致一些副作用: 我附上了一张照片来显示我的问题C# 如何检查外部窗口的一部分是否覆盖,c#,windows,winapi,C#,Windows,Winapi,我正在为扑克明星们建立一个HUD来显示一些相关的统计数据 覆盖是一个UserControl:Form,我通过winapi将其从statusbar和Alt+T中隐藏。 事实上,它有一个最高的,总是在扑克桌上,但这会导致一些副作用: 我附上了一张照片来显示我的问题 1:一切都好 2:我的webbrowser只覆盖了扑克桌的一部分,在这种情况下会显示HUD(好的!) 3:浏览器覆盖了放置HUD的桌子区域。在这种情况下,我的HUD不应该是最上面的 我拥有的数据: IntPtr手柄(扑克桌的) 点位
- 1:一切都好
- 2:我的webbrowser只覆盖了扑克桌的一部分,在这种情况下会显示HUD(好的!)
- 3:浏览器覆盖了放置HUD的桌子区域。在这种情况下,我的HUD不应该是最上面的李>
- IntPtr手柄(扑克桌的)
- 点位置(在屏幕上)
- 点大小(从窗口)
//编辑 我现在用一个定时器在1毫秒间隔内完成了,它工作60%,有一些副作用。宁为无
if (GetForegroundWindow() == TableHandle) {
this.TopMost = true;
} else {
this.TopMost = false;
}
是我自己想出来的-开始吧
public class WinAPI {
[DllImport("user32.dll")]
public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, uint dwNewLong);
public const int GWL_HWNDPARENT = -8;
}
WinAPI.SetWindowLong(this.Handle, WinAPI.GWL_HWNDPARENT, (uint)this.ObservedHandle);