你如何(通过编程)知道Windows 7电脑上是否使用了大字体?

How can you tell (programmatically) if large fonts are in use on a Windows 7 PC

本文关键字:是否 电脑 字体 Windows 知道 编程      更新时间:2023-10-16

我需要从c++编写的应用程序中确定是否在Windows 7上使用大字体。如有任何帮助,不胜感激。

In MFC:

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

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

Windows显示设置(控制面板外观和个性化显示)影响当前每英寸点数(DPI)。实际上,有一种方法可以根据MSDN使用GetDeviceCaps():

获取DPI信息。
HDC hdc = ::GetDC(NULL);
int dpiX = ::GetDeviceCaps(hdc, LOGPIXELSX);
int dpiY = ::GetDeviceCaps(hdc, LOGPIXELSY);
::ReleaseDC(NULL, hdc);

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

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