При запуске игры XNA белый экран очень быстро мигает.На медленных машинах это более заметно, чем на быстрых.Мы разрабатываем игровой костюм с системой меню, разработанной в WPF.Это меню запускает наши игры XNA и устанавливает его в качестве окна переднего плана (работает только тогда, когда у него есть фокус)
Проблема, с которой мы столкнулись, заключается в том, что если игрок продолжает нажимать левую кнопку после запуска игры, системазастрял в этой белой вспышке экрана.Экран остается белым, и игрок не может выйти из этого экрана с помощью мыши (alt-tab работает, но не поддерживается).
Как я могу предотвратить это?Я хочу установить игру XNA в качестве окна переднего плана, потому что в зависимости от того, где игрок нажимает, система меню может оставаться активной.
Это код системы меню, которая запускает игру XNA.
var process = Process.Start(info);
var currentProcess = Process.GetCurrentProcess();
while (!process.HasExited)
{
Thread.Sleep(50);
if (GetForegroundWindow() == currentProcess.MainWindowHandle)
{
Activate(process.MainWindowHandle);
}
}
Этот код устанавливает игру XNA в качестве окна переднего плана.
/// <summary>
/// Sets the window to be foreground
/// </summary>
[DllImport("User32")]
private static extern int SetForegroundWindow(IntPtr hwnd);
/// <summary>
/// Activate or minimize a window
/// </summary>
[DllImportAttribute("User32.DLL")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int SW_SHOW = 5;
private const int SW_MINIMIZE = 6;
private const int SW_RESTORE = 9;
/// <summary>
/// The GetForegroundWindow function returns a handle to the foreground window.
/// </summary>
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
private static void Activate(IntPtr windowHandle)
{
ShowWindow(windowHandle, SW_RESTORE);
SetForegroundWindow(windowHandle);
}
Спасибо, Ваутер