我正在为 Pokerstars 构建一个 HUD 以显示一些相关的统计数据。
Overlay 是一个 UserControl : Form,我通过 winapi 将其从状态栏和 Alt+T 中隐藏起来。acutally 它有一个 TopMost,总是在 Pokertable 上,但这会导致一些副作用:
我附上了一个截图来显示我的问题
- 1:一切正常
- 2:我的网络浏览器只覆盖了 Pokertable 的一部分,在这种情况下,HUD 显示(好的!)
- 3:浏览器覆盖了放置 HUD 的 Pokertable 区域。在这种情况下,我的 HUD 不应该是 TopMost;
我拥有的数据:
- IntPtr 句柄(PokerTable 的)
- 点位置(在屏幕上)
- 点大小(从窗口)
哪个WinAPI函数可以帮助ne?有人知道一些例子吗?我敢肯定,这是可能的,有 Porgrams (PokerTracker, HoldemManager) 解决了这个挑战。
我使用的 TopMost 始终位于 PokerTable 的顶部。所以如果用户点击它,HUD可能不会被覆盖。
//编辑
我现在用一个 1ms 间隔的定时器来做这件事,它的工作率为 60%,有一些副作用。比什么都好
if (GetForegroundWindow() == TableHandle) {
this.TopMost = true;
} else {
this.TopMost = false;
}