如何获取控制面板设置值(如字体大小)

时间:2018-09-19 08:56:09

标签: c++ dpi

    int CMonitor::GetDPI() const
{
    HDC hdc = CreateDC();
    int dpiX = ::GetDeviceCaps(hdc, LOGPIXELSX);
    int dpiY = ::GetDeviceCaps(hdc, LOGPIXELSY);
    ReleaseDC(hdc));
    return dpiY > dpiX ? dpiY : dpiX;
}

在我的应用程序中,DPIAware标签为假,这就是为什么我的字体大小是150%还是200%总是给我96的原因

我希望DPI的实际值为150%。它应该给我144,而不是96。

有一个GetDpiForWindow API,请告诉我,但它与Windows 7不兼容。

我想要任何与Windows 7兼容的API并给我实际的DPI。

1 个答案:

答案 0 :(得分:0)

我找到了解决方法:

int desktopWidth = GetDeviceCaps(screen, DESKTOPHORZRES); 
int displayWidth = GetDeviceCaps(screen, HORZRES); 

这里第一个给出了DPI True效果的实际宽度,第二个给出了DPI的假宽度,因此通过将它们相除,我得到了实际的DPI和字体大小。

在MSDN上未提供DESKTOPHORZRES