GetDeviceCaps 获取当前系统DPI
2023-08-07
43
0
GetDeviceCaps 函数检索指定设备的设备特定信息。
GetDeviceCaps的参数为LOGPIXELSX,表示每个逻辑英寸沿屏幕宽度的像素数。
#include <cstdio>
#include <Windows.h>
#pragma comment(lib, "User32.lib")
#pragma comment(lib, "Gdi32.lib")
using namespace std;
double getDpi();
int main()
{
const double dpi = getDpi();
printf("%f", dpi);
}
/**
* 获取Windows缩放等级,适配高DPI
*/
double getDpi()
{
SetProcessDPIAware();
// Get desktop dc
auto&& desktopDc = GetDC(nullptr);
// Get native resolution
const int dpi = GetDeviceCaps(desktopDc, LOGPIXELSX);
auto ret = 1 + (dpi - 96.0) / 24.0 * 0.25;
if (ret < 1)
{
ret = 1;
}
ReleaseDC(nullptr, desktopDc);
return ret;
}
输出:
1.250000