windows屏幕分辨率获取方法大全

方法一:MonitorFromWindow

//获取程序当前所在显示器的分辨率大小,可以动态的获取程序所在显示器的分辨率
SIZE GetScreenResolution(HWND hWnd) {
    SIZE size;
    if(!hWnd)
        return size;

    //MONITOR_DEFAULTTONEAREST 返回值是最接近该点的屏幕句柄
    //MONITOR_DEFAULTTOPRIMARY 返回值是主屏幕的句柄
    //如果其中一个屏幕包含该点,则返回值是该屏幕的HMONITOR句柄。如果没有一个屏幕包含该点,则返回值取决于dwFlags的值
    HMONITOR hMonitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);
    MONITORINFOEX miex;
    miex.cbSize = sizeof(miex);
    if (!GetMonitorInfo(hMonitor, &miex))
        return size;

    DEVMODE dm;
    dm.dmSize = sizeof(dm);
    dm.dmDriverExtra = 0;

    //ENUM_CURRENT_SETTINGS 检索显示设备的当前设置
    //ENUM_REGISTRY_SETTINGS 检索当前存储在注册表中的显示设备的设置
    if (!EnumDisplaySettings(miex.szDevice, ENUM_CURRENT_SETTINGS, &dm))
        return size;

    size.cx = dm.dmPelsWidth;
    size.cy = dm.dmPelsHeight;
    return size;
}

方法二:SystemParametersInfo

//获取可用桌面大小
RECT rect;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);
int cx = rect.right - rect.left;
int cy = rect.bottom - rect.top;

方法三:GetSystemMetrics

//多显示器时,使用SM_CXSCREEN,SM_CYSCREEN获取只是主屏大小
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);

方法四:GetDeviceCaps

//在多显示器系统中,GetDeviceCaps 函数返回主显示器的功能。如果你想为其他显示器的信息,则必须使用多显示器的 API 函数或调用 CreateDC 函数得到一个 hdc 指定显示器的设备环境
HDC hdcScreen = GetDC(NULL);
int cx = GetDeviceCaps(hdcScreen, HORZRES);
int cy = GetDeviceCaps(hdcScreen, VERTRES);
DeleteObject(hdcScreen);

重要说明

欢迎大家关注我的个人微信公众号,一起探讨和学习C++后端、客户端的开发知识!
windows屏幕分辨率获取方法大全

windows屏幕分辨率获取方法大全

上一篇:【译】.NET 5. 0 中 Windows Form 的新特性


下一篇:谁说NETFRAMEWOR API 不能微服务化?---让 NETFRAMEWOR API 也上DOCKER—LINUX 服务化 系列文章