我正在尝试使用SystemParametersInfo()
SPI_GETNONCLIENTMETRICS
找到默认的系统字体大小。
在Vista上,当我在XP上运行完全相同的应用程序LOGFONT
时,返回的NONCLIENTMETRICS
内的lfHeight
结构实际上在lfHeight
中具有正确的字体高度(并且lfWidth
)始终为零。
为什么会这样,以及在两个系统上检索字体大小的正确方法是什么?
答案 0 :(得分:1)
您是否将cbSize
NONCLIENTMETRICS
成员设为sizeof(NONCLIENTMETRICS)
?
根据{{3}},您需要运行时系统版本检查,并在Windows XP下运行时减去iPaddedBorderWidth
的大小。
答案 1 :(得分:0)
我不知道100%正确答案,但根据MSDN,零值对lfHeight和lfWidth都有特殊含义:
这取自MSDN,article Windows GDI,“LOGFONT”
lfHeight - 如果为0 - 字体映射器在搜索匹配项时使用默认高度值。
lfWidth - 如果lfWidth为零,则设备的宽高比与可用字体的数字化宽高比相匹配,以找到最接近的匹配,由差值的绝对值确定。 / p>