在XNA中让游戏窗口“始终位于顶部”

时间:2009-07-14 21:36:29

标签: c# xna

我想让XNA游戏窗口处于“窗口”模式,但“总是在顶部”,有没有办法做到这一点?

3 个答案:

答案 0 :(得分:4)

感谢您的回复,该网页的代码无法为我编译,但它确实指出了我正确的方向,这是我正在使用的代码(使用XNA 3.1)

首先,在与此代码中的游戏复制和粘贴相同的命名空间内

class User32
    {
        [DllImport("user32.dll")]
        public static extern void SetWindowPos(uint Hwnd, int Level, int X, int Y, int W, int H, uint Flags);
    }

我刚把它写在我的主要“游戏”类之上,因为我只在我的Game类中使用它。

然后在游戏类的LoadContent()中(必须在LoadContent()方法中,在其他任何地方都不能正常工作),在某处写这个......

User32.SetWindowPos((uint)this.Window.Handle, -1, 0, 0, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight, 0);

注意:“graphics”是每当您启动项目时为您预先制作的GraphicsDeviceManager实例。

这也可用于将游戏窗口定位在屏幕上的任何位置。对我来说,我希望它在屏幕的左上角。

答案 1 :(得分:3)

http://www.pinvoke.net/default.aspx/user32/SetWindowPos.html

在WinApi类中包含示例页面中的值,并从您的游戏类中调用此函数:

WinApi.SetWindowPos(this.Window.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);

应该这样做。

答案 2 :(得分:0)

最简单的方法是将图形设备设置为全屏显示。将以下代码放在主游戏方法中:

this.graphics.IsFullScreen = true;