3

2 つのディスプレイに 2 つのウィンドウを作成しようとしています。しかし、問題があります。2 番目のウィンドウは全画面モードで表示されますが、最初のウィンドウは最小化されており、タスクバーでクリックして全画面表示にする必要があります。

コードを使用してループでウィンドウを作成します。

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 Professional です。

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);
    }
}

したがって、問題は「if (ShouldMinimizeOnFocusLoss(window))」です。

この問題を解決するために、ウィンドウを作成する前に次のコードを追加します。

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