在问我的问题之前,让我说我已经在这里和其他论坛上阅读了大约 30 个主题,并且没有一个解决方案对我有用:(
所以,事情就是这样。我正在为在线扑克室制作 Hud。所以,我的程序需要在扑克室创建的每个窗口顶部显示一个表格。
问题是,如果我想堆叠多个“桌面窗口”(扑克应用程序创建的窗口),如果我的 hud 设置为最顶层,那么所有表的顶部都有 ALL hud,但我想要的是z 顺序中有 Hud-Table-Hud-Table-Hu... 等等。
我已经尝试了几种使用 windows 窗体函数和 windows api 的方法:
this.SetDesktopLocation(rct.Left + p.X, rct.Top + p.Y);
//Or
Win32Utils.SetParent(this.Handle, this.Table.Handle);
//Or
Win32Utils.SetWindowPos(this.Handle, (int)this.Table.Handle, rct.Left + p.X, rct.Top + p.Y, this.Width, this.Height, (int)1);
//Or
Win32Utils.SetZOrder(this.Handle, this.Table.Handle);
在 SetZOrder 的情况下,代码如下:
public static void SetZOrder(IntPtr targetHwnd, IntPtr insertAfter)
{
IntPtr nextHwnd = IntPtr.Zero;
SetWindowPos(targetHwnd, insertAfter, 0, 0, 0, 0, SetWindowPosFlags.SWP_NOMOVE | SetWindowPosFlags.SWP_NOSIZE | SetWindowPosFlags.SWP_NOACTIVATE);
}
所以我不知道还能尝试什么。
注意:如果我使用 SetParent,扑克应用程序会冻结。
照片。我的应用是底部的窗口,在扑克应用窗口的左上角创建小窗体: