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

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专业版。

1个回答

9

我逐步调试并发现原因在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");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接