11

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

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

4

5 回答 5

8

所有答案似乎都过时了,现在只需指定SDL_WINDOW_MAXIMIZEDSDL_CreateWindow.

window = SDL_CreateWindow(
    "Foobar",
    SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720,
    SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_MAXIMIZED
);
于 2017-09-04T13:56:09.053 回答
7

在 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);
于 2014-05-14T21:08:52.913 回答
5

当您使用 SDL_RESIZABLE 标志时,此功能由窗口管理器控制。要使用 SDL 模拟最大化窗口,您首先需要确定最大化时窗口将占据的大小。然后在使用SDL_VIDEO_WINDOW_POS 环境变量放置窗口后,您将使用此大小调用SDL_SetVideoMode

如果您确实需要像单击最大化按钮一样最大化窗口,那么您将不得不直接访问底层窗口管理器(即 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);
于 2008-11-24T19:51:01.990 回答
0

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

于 2008-11-23T04:46:25.233 回答
-1

SDL_FULLSCREEN 是您正在寻找的选项:

flags |= SDL_FULLSCREEN;
screen = SDL_SetVideoMode(..., flags);
于 2008-11-23T06:31:49.607 回答