2014-11-06 269 views
1

我试图在两个显示器上创建两个窗口。但是我遇到了一个问题:第二个窗口以全屏模式显示,但第一个窗口已最小化,我需要在任务栏上单击它以展开至全屏。SDL2:两个显示器,两个窗口和全屏模式

我创建循环窗户代码:

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

我调试一步一步地,发现SDL_video.c :: SDL_OnWindowFocusLost(SDL_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(窗口))”。

SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0"); 

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