сделать игровое окно "всегда сверху" в XNA - PullRequest
2 голосов
/ 15 июля 2009

Я хочу, чтобы игровое окно XNA было в "оконном" режиме, но "всегда сверху", есть ли способ сделать это?

Ответы [ 3 ]

4 голосов
/ 15 июля 2009

Спасибо за ваш ответ, код с этой веб-страницы не будет компилироваться для меня, однако он действительно указал мне верное направление, это код, который я использую (используя 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", поскольку я использую его только в своем классе Game.

Затем в LoadContent () класса игры (ДОЛЖЕН быть в методе LoadContent (), нигде не работает должным образом), напишите это куда-нибудь ...

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

примечание: "graphics" - это экземпляр GraphicsDeviceManager, который готов для вас при каждом запуске проекта.

Это также можно использовать для позиционирования окна игры в любом месте на экране. Для меня я хотел это в верхнем левом углу экрана.

3 голосов
/ 15 июля 2009

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

Включите значения из примера страницы в класс WinApi и вызовите эту функцию из вашего класса игры:

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

Это должно сделать это.

0 голосов
/ 16 июля 2009

Самый простой способ - настроить графическое устройство на отображение в полноэкранном режиме. Поместите следующий код в основной метод игры:

this.graphics.IsFullScreen = true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...