win32获取屏幕缩放比例
				
									
					
					
						|  | 
							admin 2025年10月21日 10:28
								本文热度 448 | 
					
				 
				原理就是获取 实际 设置的分辨率 / 当时显示的分辨率。
设置屏幕缩放后,调用常规的方式获取桌面大小,都是缩放后的尺寸,而非实际设置的尺寸。
这里可以用EnumDisplaySettings函数来获取实际设置的分辨率大小。
#include <iostream>#include<Windows.h>
HMONITOR GetPrimaryMonitor(){    POINT ptZero = { 0, 0 };    return MonitorFromPoint(ptZero,        MONITOR_DEFAULTTOPRIMARY);}
float GetMonitorScalingRatio(HMONITOR monitor){    MONITORINFOEX info ={ };    info.cbSize = sizeof(info);    GetMonitorInfo(monitor, &info);    DEVMODE devmode = {};    devmode.dmSize = sizeof(DEVMODE);    EnumDisplaySettings(info.szDevice, ENUM_CURRENT_SETTINGS, &devmode);    return static_cast<float>(devmode.dmPelsWidth) / (info.rcMonitor.right - info.rcMonitor.left);}
int main(){    auto h = GetPrimaryMonitor();    float s = GetMonitorScalingRatio(h);    std::cout << s << std::endl;}
 
运行结果 :
 运行结果 :
阅读原文:https://mp.weixin.qq.com/s/aba0RgyyN88rVUY-F2ZCRg
该文章在 2025/10/22 9:27:25 编辑过