首页 > 解决方案 > EnumDisplaySettings 不返回超宽显示器分辨率

问题描述

我正在EnumDisplaySettings尝试获取用户显示器支持的所有分辨率,但使用超宽显示器的用户报告说未列出本机分辨率。

(代码使用了一些 Unreal-specific 容器,但这应该适用于任何 Windows 设置)

TArray<FIntPoint> GetResolutionsForDisplayDevice( DISPLAY_DEVICE& dd )
{
    TArray<FIntPoint> resolutions;
    DEVMODE dm = { 0 };
    dm.dmSize = sizeof( DEVMODE );
    dm.dmDriverExtra = 0;
    for ( uint32 i = 0; EnumDisplaySettings( dd.DeviceName, i, &dm ) != 0; i++ )
    {
        resolutions.AddUnique( FIntPoint( dm.dmPelsWidth, dm.dmPelsHeight ) );
    }
    return resolutions;
}

例如,这段代码在一台带有一个显示器的计算机上运行时,其原始分辨率为 5120x1440,它列出了一堆分辨率,但最大的一个是 3840x1080。

标签: c++windowsresolutionmonitor

解决方案


推荐阅读