1、改变缩放后需要重启系统
// 获取窗口当前显示的监视器
HWND hWndScreen = GetDesktopWindow();
HMonITOR hMonScreen = MonitorFromWindow(hWndScreen, MONITOR_DEFAULTTONEAREST);
//获取监视器的逻辑宽度
MonITORINFOEX monitorInfoex;
monitorInfoex.cbSize = sizeof(monitorInfoex);
GetMonitorInfo(hMonScreen, &monitorInfoex);
//获取监视器的物理宽度
DEVMODE devMode;
devMode.dmSize = sizeof(devMode);
devMode.dmDriverExtra = 0;
EnumDisplaySettings(monitorInfoex.szDevice, ENUM_CURRENT_SETTINGS, &devMode);
float fRes = devMode.dmLogPixels / 96.0;
//返回缩放比
return fRes;
2、改变缩放后不需要重启系统
// 获取窗口当前显示的监视器 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); //返回缩放比 return horzScale;



