DPI is how scaling setting is implemented. Their relationship is:
96 DPI = 100% scaling
120 DPI = 125% scaling
144 DPI = 150% scaling
192 DPI = 200% scaling
double CUtils::getDpiScale()
{
double dScale = 1;
// Get desktop dc
HDC dc = ::GetDC(NULL);
// Get native resolution
int hDPI = GetDeviceCaps(dc, LOGPIXELSX);
int vDPI = GetDeviceCaps(dc, LOGPIXELSY);
int dpi = (hDPI + vDPI) / 2;
dScale = 1 + ((dpi - 96) / 24.0)*0.25; //支持自定义的缩放比例,除法注意结果类型
if (dScale < 1)
{
dScale = 1;
}
::ReleaseDC(NULL, dc);
return dScale;
}