我有一个 DPI Aware 应用程序(通过清单文件),并且在 1 个监视器系统上,以下所有方法都返回错误的桌面分辨率:
- 获取系统指标
- 获取监控信息
- GetWindowRect(GetDesktopWindow(), &desktop)
- EnumDisplaySettingsExA/ENUM_CURRENT_SETTINGS
- IDXGIOutput::GetDesc
我的显示器是 4k,但我将桌面尺寸设置为 1920x1080,比例为 100%。在窗口模式下,通过所有方法报告的分辨率都是正确的。但是,当切换到全屏时,它们都返回 1600x1200。如果是 DPI Aware 问题,它至少应该保持纵横比,例如 1600x900。
我注意到错误的结果是在调用 IDXGISwapChain::SetFullscreenState(true, output_device) 之后根据 MSDN 使用标志 DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH 创建交换链对象的。
该应用程序使用 DirectX 11。
有什么建议是我的原因吗?
谢谢