gpt4 book ai didi

sdl - 使用 SDL 处理最大化窗口

转载 作者:行者123 更新时间:2023-12-01 05:36:05 28 4
gpt4 key购买 nike

我们最近移植了 Bitfighter从 GLUT 到 SDL。这样做有很多好处,但也有一些缺点,特别是在窗口管理领域。

Bitfighter 在固定纵横比窗口(800x600 像素)中运行。用户可以将他们的窗口设置为任何他们想要的大小,但我们会捕获调整大小事件并对请求的大小进行调整以确保窗口保持正确的比例(使用 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 天以来已经有了很大的改进。

    关于sdl - 使用 SDL 处理最大化窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679560/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com