获取windows屏幕缩放值 C++

#include <windows.h>
#include <stdio.h>
#include <assert.h>

int main()
{
    // 获取窗口当前显示的监视器
    // 使用桌面的句柄.
    HWND hWnd = GetDesktopWindow();
    HMONITOR hMonitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);

    // 获取监视器逻辑宽度与高度
    MONITORINFOEX miex;
    miex.cbSize = sizeof(miex);
    GetMonitorInfo(hMonitor, &miex);
    int cxLogical = (miex.rcMonitor.right - miex.rcMonitor.left);
    int cyLogical = (miex.rcMonitor.bottom - miex.rcMonitor.top);

    // 获取监视器物理宽度与高度
    DEVMODE dm;
    dm.dmSize = sizeof(dm);
    dm.dmDriverExtra = 0;
    EnumDisplaySettings(miex.szDevice, ENUM_CURRENT_SETTINGS, &dm);
    int cxPhysical = dm.dmPelsWidth;
    int cyPhysical = dm.dmPelsHeight;
    // 缩放比例计算  实际上使用任何一个即可
    double horzScale = ((double)cxPhysical / (double)cxLogical);
    double vertScale = ((double)cyPhysical / (double)cyLogical);
    printf("%lf  %lf\n", horzScale, vertScale);
    assert(horzScale == vertScale); // 宽或高这个缩放值应该是相等的

    return 0;
}

参考:获取windows屏幕缩放值 C++_未来之歌-CSDN博客_获取屏幕缩放比例测试使用以下代码在win7和win10上跑过,目前未出现获取错误的问题:#include "windows.h"#include "assert.h"int main(){ // 获取窗口当前显示的监视器 // 使用桌面的句柄. HWND hWnd = GetDesktopWindow(); HMONITOR hMonitor = MonitorFromW...https://lesliefish.blog.csdn.net/article/details/89918813

猜你喜欢

转载自blog.csdn.net/xiao_yi_xiao/article/details/121095657