使用SDL处理最大化的窗口
我们最近将GL000从GLUT移植到SDL.这样做有很多好处,但也有一些缺点,特别是在窗口管理方面.
Bitfighter在固定宽高比窗口(800×600像素)下运行.用户可以将窗口设置为他们想要的任何大小,但我们捕获resize事件并调整所请求的大小以确保窗口保持正确的比例(使用SDL_SetVideoMode). (以下问题适用于Windows,但尚未在其他平台上进行过测试.我在下面描述的内容特指Windows,但我正在寻找独立于平台的解决方案.) 通常,这种方法很有效,除非用户通过双击标题栏或使用最大化按钮来最大化窗口.在这种情况下,调用窗口调整大小事件的窗口大小接近屏幕大小(减去窗口装饰的一些像素).不幸的是,当窗口最大化时,SDL_SetVideoMode没有效果(与能够调整最大化窗口的GLUT不同).此外,后续调用SDL_GetVideoInfo报告我们请求的大小,而不是窗口的实际当前大小,因此很难判断尝试的大小调整是否有效. 我正在寻找一种独立于平台的方式来执行以下任何操作(按优先级降序排列): >在窗口最大化后调整窗口大小 Bitfighter是用C语言编写的,我们正在使用SDL的最新官方版本. 解决方法
迁移到SDL 2.0(您似乎已经拥有)
SDL 2.0为窗口管理提供了更好的API(它实际上提供了一个).虽然SDL 2.0中的Windows管理仍然存在许多错误(特别是在Linux方面),但自1.2天以来它已经有了很大的改进. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |