如何(以编程方式)判断Windows 7 PC上是否正在使用大字体

时间:2011-10-11 17:02:39

标签: c++ windows-7 large-fonts

我需要在使用C ++编写的应用程序中识别Windows 7中是否使用大字体。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

在MFC中:

void CTestFontDlg::OnBnClickedButton1()
{
    CDC* pDC = GetDC();
    int nRes = GetDeviceCaps(*pDC, LOGPIXELSY);
}

正常字体大小= 96(100%),中等(125%)= 120 ...

答案 1 :(得分:0)

Windows显示设置(控制面板\外观和个性化\显示)会影响当前每英寸点数(DPI)。事实上,有一种方法可以使用according to MSDN获取DPI信息GetDeviceCaps()

HDC hdc = ::GetDC(NULL);
int dpiX = ::GetDeviceCaps(hdc, LOGPIXELSX);
int dpiY = ::GetDeviceCaps(hdc, LOGPIXELSY);
::ReleaseDC(NULL, hdc);

这将为您提供DPI(以像素为单位)。如果你想要实际比例因子(g.e. 150%),除以96. 96是基线DPI,所以它被认为是“100%”。您可以使用MulDiv(),以便整数除法在需要时正确舍入结果。

int scaleFactorX = ::MulDiv(dpiX, 100, 96);
int scaleFactorY = ::MulDiv(dpiY, 100, 96);