2011-10-11 22 views
1

我需要从使用C++编写的应用程序中识别Windows 7上是否使用大字体。任何援助将不胜感激。如何判断(编程)在Windows 7 PC上是否使用大字体

+0

定义大。我知道一个兄弟的字体比我的大2倍,有些人认为我的大... – 2011-10-11 17:04:57

+0

Windows显示设置:控制面板/外观/显示/ ..更小,中等,更大,其中大于150 %。 – CarltonD

回答

2

在MFC:

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

普通字体大小= 96(100%),中(125%)= 120 ...

+0

完美。非常感谢你。 – CarltonD

0

Windows显示设置(控制面板\外观和个性化\显示)会影响每英寸点数(DPI)。其实也有办法使用GetDeviceCaps()获得DPI信息according to MSDN

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); 
相关问题