【发布时间】:2014-04-10 15:54:12
【问题描述】:
问题发生的时候
SDL_RestoreWindow(gameWindow);
在最小化的窗口上调用。窗口不会重新出现。
我制作了一个小虚拟程序来模拟我的主程序正在调用的那种 SDL 调用,并且问题重现。代码如下:
#include <SDL.h>
int main(int argn, char **argv)
{
// The windows
SDL_Window *gameWindow;
// Initialise
SDL_Init(SDL_INIT_EVERYTHING);
// Create window
gameWindow = SDL_CreateWindow(
"Game Window",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
640,
480,
SDL_WINDOW_OPENGL
);
// Minimise/ hide or whatever?
SDL_MinimizeWindow(gameWindow);
// Wait
SDL_Delay(1000);
// Attempt to bring back the window
SDL_RestoreWindow(gameWindow);
// program would run here
SDL_Delay(1000);
// quit out
SDL_DestroyWindow(gameWindow);
// Clean up
SDL_Quit();
return 0;
}
关于为什么这个游戏窗口没有重新出现的任何想法? SDL_Restore 不是为恢复最小化窗口而设计的吗?
仅供参考,这是在 Ubuntu 13.10 上运行并使用 gcc 4.8.1 和 Gnome metacity 2.34.13 编译
【问题讨论】:
-
函数返回什么值?
-
SDL_RestoreWindow 和其他返回 void 根据wiki.libsdl.org/SDL_RestoreWindow
-
似乎无法重现这一点(尽管环境不同)。在您的测试用例中,您是否在最小化之前看到弹出窗口? SDL_CreateWindow 是否成功返回?您是否尝试过不使用 OpenGL(尝试使用 SDL_WINDOW_SHOWN 标志)?
-
是的,我看到了窗口小狗,然后最小化,但永远不会回来。 SDL_WINDOW_SHOWN 在这里似乎也没有什么不同。不过,我会在不同的环境中检查一下,看看是否会有所不同。
标签: c++ linux ubuntu window sdl