SDL2:两个显示器,两个窗口和全屏模式

时间:2014-11-06 08:20:54

标签: c++ sdl-2 multiple-monitors multi-window

我正在尝试在两个显示器上创建两个窗口。但我有一个问题:第二个窗口以全屏模式显示,但第一个窗口最小化,我需要在任务栏上单击它以扩展到全屏。

我使用代码创建循环窗口:

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。

1 个答案:

答案 0 :(得分:6)

我逐步调试并在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);
    }
}

所以问题出在这里" if(ShouldMinimizeOnFocusLoss(window))"。

要解决此问题,我在创建窗口之前添加以下代码:

SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0");