我该如何告诉SDL最大化应用程序窗口?
我正在用这些标志创建窗口:SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE。
使用SDL_RESIZABLE标志时,此function由窗口管理器控制。 要使用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);
在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);
所有答案似乎都过时了,现在只需将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 );
可以设置其他环境变量来控制显示窗口。 不幸的是,目前sdl文档已关闭,因此我无法查找您需要的内容。
SDL_FULLSCREEN是您正在寻找的选项:
需要了解更多c/c++开发分享最大化SDL窗口,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!
flags |= SDL_FULLSCREEN; screen = SDL_SetVideoMode(..., flags);
以上就是c/c++开发分享最大化SDL窗口相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/978833.html