最大化SDL窗口

时间:2008-11-22 21:48:53

标签: c window sdl portability

如何告诉SDL最大化应用程序窗口?

我正在使用这些标志创建窗口:SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE。

5 个答案:

答案 0 :(得分:6)

在SDL2.0中

sdl_window = SDL_CreateWindow("title", 10, 30, window_width, window_height, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
SDL_MaximizeWindow(sdl_window);
SDL_GetWindowSize(sdl_window, &window_width, &window_height);
sdl_gl_context = SDL_GL_CreateContext(sdl_window);
SDL_GL_MakeCurrent(sdl_window, sdl_gl_context);

答案 1 :(得分:5)

当您使用SDL_RESIZABLE标志时,此功能由窗口管理器控制。要使用SDL模拟最大化窗口,您需要首先确定窗口在最大化时占用的大小。然后,在使用SDL_SetVideoMode放置窗口后,您可以使用此尺寸调用SDL_VIDEO_WINDOW_POS environment variable

如果您确实需要最大化窗口,就像您单击了最大化按钮一样,那么您将必须直接访问基础窗口管理器(即SDL不会帮助您)。

例如,ShowWindow函数可用于使用Win32 API最大化窗口。要获取SDL创建的窗口的句柄,请使用SDL_GetWMInfo函数。生成的SDL_SysWMinfo结构包含HWND类型的窗口字段。这必须与SW_MAXIMIZE标志一起传递给ShowWindow函数。

SDL_SysWMinfo info;
SDL_VERSION(&info.version);
SDL_GetWMInfo(&info);
ShowWindow(info.window, SW_MAXIMIZE);

答案 2 :(得分:3)

所有答案似乎都已过时,现在只需将SDL_WINDOW_MAXIMIZED指定为SDL_CreateWindow的标记。

window = SDL_CreateWindow(
    "Foobar",
    SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720,
    SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_MAXIMIZED
);

答案 3 :(得分:0)

可以设置其他环境变量来控制显示窗口。不幸的是,目前sdl文档已关闭,因此我无法查找您需要的内容。

答案 4 :(得分:-1)

SDL_FULLSCREEN是您正在寻找的选项:

flags |= SDL_FULLSCREEN;
screen = SDL_SetVideoMode(..., flags);