测试使用以下代码在win7和win10上跑过,目前部分网友出现获取错误的问题,原因尚未知:
#include "windows.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);
assert(horzScale == vertScale); // 宽或高这个缩放值应该是相等的
return 0;
}
https://github.com/lesliefish/something/blob/master/WindowsScaleGet.cpp
对一段代码在win7和win10系统上进行测试,代码链接为https://github.com/lesliefish/something/blob/master/WindowsScaleGet.cpp 。目前部分网友使用时出现获取错误问题,原因未知。
1万+

被折叠的 条评论
为什么被折叠?



