SDL2切换全屏:窗口位置重置
SDL2 Toggle fullscreen: Window position gets reset
我正在尝试在sdl2中切换全屏,到目前为止它可以使用。但是,当模式返回窗口模式时,位置将重置为0、0。我尝试在窗口完整屏幕上存储窗口的最后一个位置,但是在窗口返回窗口后,potiton仍将重置为0,0。/p>
我正在输出最后一个位置,这似乎是正确的,但是返回到窗口时仍将重置为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);
}
}
查看我的一个项目,该项目可以设置窗口,全屏或全屏桌面,我找到了这两行:
// Fixes problem when Game::changeResolution is called in fullscreen or fullscreen desktop and then return to windowed.
SDL_SetWindowSize(m_pWindow, m_width, m_height);
SDL_SetWindowPosition(m_pWindow, SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED);
首先完成SDL_SetWindowSize
,一切正常。然后我评论了SDL_SetWindowSize
行,然后再次运行。从SDL_WINDOW_FULLSCREEN_DESKTOP
返回时,将其重置为(0,0)
。
尽管从SDL_WINDOW_FULLSCREEN
返回到窗口时,它的放置还可以。尝试添加该行,看看它是否为您解决了问题。也尝试在呼叫之间添加SDL_Delay(2000);
。
相关文章:
- glfw 在创建之前/创建时实例化窗口位置
- Win32 C++ 将窗口位置设置为右下角
- QT:即使在static_cast后也无法在主窗口中设置对象的位置
- 恢复Qt窗口大小和位置问题
- 获取窗口中的鼠标位置
- 如何以编程方式更改基于对话框的窗口的大小和位置?
- 在qt中更改show()上的窗口位置
- SFML参考窗口在绝对位置绘制
- 如何在Mac OSX上的窗口客户端内获取真实的鼠标位置?
- 如何在应用程序窗口中设置光标位置?(C )
- 如何设置GLFW窗口的(0,0)坐标位置
- SDL2切换全屏:窗口位置重置
- Win32 C++-检查窗口位置X/PositionY和宽度/高度是否已更改
- C++ GUI 窗口位置
- 如何在MFC上设置窗口位置以将其定位到屏幕顶部
- QML—启动时的主窗口位置(屏幕中心)
- Visual Studio控制台窗口位置
- 获取Windows下的当前窗口位置
- 在GTK中保存/恢复窗口位置
- GetWindowPlacement给出了不正确的窗口位置