【问题标题】:A way to listen window mode changes WndProc一种监听窗口模式变化的方法 WndProc
【发布时间】:2022-10-05 01:53:59
【问题描述】:

当我的游戏从窗口切换到全屏时,我想刷新我的交换链,反之亦然,目前我只发现 uMsg == WM_SIZE 但它不是最佳的,不幸的是,全屏到无边框不起作用.... 还有其他消息吗? 谢谢

    标签: c++ windows window directx-11 wndproc


    【解决方案1】:

    对于使用 DXGI 的“全屏”与“窗口”处理,有两种基本方法:

    1. 让 DXGI 通过DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH 为您完成。

    2. 使用标志DXGI_MWA_NO_WINDOW_CHANGES 并自己处理。实际上,您确实使用WM_SIZE 来确定更改。

      Microsoft Docs: DirectX Graphics Infrastructure (DXGI) Best Practices

      对于窗口模式,WM_SIZE 的一个挑战是,当调整“橡皮筋”矩形时,您会收到很多这样的消息,并且调整后缓冲区的大小并没有那么快。这里的一种解决方案是使用WM_ENTERSIZEMOVEWM_EXITSIZEMOVE,这样您就可以暂停调整大小,直到完成。

      请参阅GitHub 详细的 WndProc 实现。

      最后一点:“全屏”实际上有几个定义。见this blog post

    【讨论】:

      猜你喜欢
      • 2011-08-17
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多