【发布时间】:2017-10-28 11:47:48
【问题描述】:
我正在尝试在 SDL2 中切换全屏,到目前为止它可以工作。但是,当模式返回窗口模式时,位置会重置为 0、0。我尝试在窗口全屏之前存储窗口的最后一个位置,但在返回窗口模式后,位置仍会重置为 0,0。
我正在输出最后一个位置,它看起来是正确的,但是当返回窗口时它仍然被重置为 0,0。我需要监听某个事件或其他什么吗?
void ToggleFullscreen(SDL_Window* window) {
Uint32 flag = SDL_WINDOW_FULLSCREEN;
bool isFullscreen = SDL_GetWindowFlags(window) & flag;
if(!isFullscreen){
SDL_GetWindowPosition(window, &lastWindowX, &lastWindowY);
}
SDL_SetWindowFullscreen(window, isFullscreen ? 0 : flag);
if(isFullscreen){
cout << "set window to: " << lastWindowX << " " << lastWindowY << endl;
SDL_SetWindowPosition(window, lastWindowX, lastWindowY);
}
}
【问题讨论】:
-
我测试了你的代码,它应该可以工作。你确定你没有将
lastWindowX和lastWindowY设置为0? -
它适用于某些机器,但不适用于其他机器。我不确定为什么。在将其从全屏设置为窗口后,我尝试过做一个异步计时器,然后在 2 秒后设置位置。它有时似乎有效,但有时边界变为无边界。在线某处必须有某种全屏切换代码,但我真的找不到。现在 SDL2 似乎不受支持。
-
你试过用
SDL_WINDOW_FULLSCREEN_DESKTOP代替SDL_WINDOW_FULLSCREEN吗?