How do I get the dimensions (resolution) of each display?

帅比萌擦擦* 提交于 2019-12-06 00:04:54

问题


I need help on how to retrieve the resolutions of my screens, as shown in the image below.

I found this documentation and it was really helpful. Here's the code that I tried, based on those docs:

int numberOfScreens = GetSystemMetrics(SM_CMONITORS);
int width           = GetSystemMetrics(SM_CXSCREEN);
int height          = GetSystemMetrics(SM_CYSCREEN);

std::cout << "Number of monitors: " << numberOfScreens << "\n";  // returns 3
std::cout << "Width:"               << width           << "\n";
std::cout << "Height:"              << height          << "\n";

However, it only identifies and gives information about the main monitor. How do I get information about the other monitors?


回答1:


#include <Windows.h>

BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor,
                              HDC      hdcMonitor,
                              LPRECT   lprcMonitor,
                              LPARAM   dwData)
{
    MONITORINFO info;
    info.cbSize = sizeof(info);
    if (GetMonitorInfo(hMonitor, &info))
    {
        std::cout << "Monitor x: "<< std::abs(info.rcMonitor.left - info.rcMonitor.right)
                  <<" y: "        << std::abs(info.rcMonitor.top  - info.rcMonitor.bottom)
                  << std::endl;
    }
    return TRUE;  // continue enumerating
}

int main()
{
    EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, 0);

    return 0;
}



回答2:


To enumerate all the devices attached to the computer, call the EnumDisplayDevices function and enumerate the devices. Then call EnumDisplayMonitors. This returns a handle to each monitor (HMONITOR), which is used with GetMonitorInfo.

You can also use WMI's Win32_DesktopMonitor class, if the OS is Windows XP SP2 or higher (it fails under SP1).

Also you can try to use EDID values from the registry to get the size, but in many cases, the EDID value is not valid.

Registry path

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY



来源:https://stackoverflow.com/questions/23492180/how-do-i-get-the-dimensions-resolution-of-each-display

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!