2012-08-16 103 views
4

我试图找到一种方法来创建中心屏幕上的SDL窗口,我发现这个代码如何在Linux中居中SDL窗口?

#ifdef WIN32 
#include <SDL_syswm.h> 
SDL_SysWMinfo i; 
SDL_VERSION(&i.version); 
if (SDL_GetWMInfo (&i)) { 
HWND hwnd = i.window; 
SetWindowPos(hwnd, HWND_TOP, x, y, width, height, flags); 
} 
#endif // WIN32 

但它仅是为Windows。我如何在Linux中执行此操作?

+0

你为什么要这么做?如果你想让用户有窗户,让他把窗户放在任何地方。 – nothrow 2012-08-16 11:55:58

+0

在窗口中央有窗口很高兴。另外,当我做一个闪屏类的东西,它不会是一个随机的位置飞溅 – 2012-08-16 11:57:29

回答

5

使用putenv()初始化SDL并创建一个窗口前:

#include <SDL.h> 
#include <SDL_getenv.h> 

int main(int argc, char* argv[]) 
{ 
    putenv("SDL_VIDEO_CENTERED=1"); 
    // init SDL, create window, main loop, etc. 
    ... 
} 
+0

这是一种魅力,谢谢! – 2012-08-16 16:19:11

2

http://www.libsdl.org/docs/html/sdlenvvars.html

SDL_VIDEO_CENTERED

如果置位,试图居中SDL窗口在X11上运行时窗 模式,或使用Cyber​​Grafix驱动程序。

可以帮助你

+0

谢谢,但我得到SDL_VIDEO_CENTERED没有宣布错误。我必须包括一些额外的东西吗? – 2012-08-16 12:01:17