3

我正在尝试在两个显示器上创建两个窗口。但是我有一个问题:第二个窗口是全屏显示的,但是第一个窗口是最小化的,需要在任务栏上点击才能展开全屏。

我用代码循环创建窗口:

windows_data.window = SDL_CreateWindow("Title", SDL_WINDOWPOS_CENTERED_DISPLAY(i),
            SDL_WINDOWPOS_CENTERED_DISPLAY(i), width, height, SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_SHOWN);

添加标志 SDL_WINDOW_MAXIMIZED 并不能解决问题。

我的系统是 Windows 8.1 Proffesional。

4

1 回答 1

8

我一步一步调试,在 SDL_video.c::SDL_OnWindowFocusLost(SDL_Window * window) 中找到了原因

SDL_OnWindowFocusLost(SDL_Window * window)
{
    if (window->gamma && _this->SetWindowGammaRamp) {
        _this->SetWindowGammaRamp(_this, window, window->saved_gamma);
    }

    SDL_UpdateWindowGrab(window);

    if (ShouldMinimizeOnFocusLoss(window)) {
        SDL_MinimizeWindow(window);
    }
}

所以问题就在这里“如果(ShouldMinimizeOnFocusLoss(window))”。

为了解决这个问题,我在创建窗口之前添加了以下代码:

SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0");
于 2014-11-06T10:18:06.927 回答