SystemParametersInfo在Vista和XP上的行为有所不同

时间:2009-06-05 13:17:13

标签: winapi windows-vista windows-xp incompatibility

我正在尝试使用SystemParametersInfo() SPI_GETNONCLIENTMETRICS找到默认的系统字体大小。

在Vista上,当我在XP上运行完全相同的应用程序LOGFONT时,返回的NONCLIENTMETRICS内的lfHeight结构实际上在lfHeight中具有正确的字体高度(并且lfWidth)始终为零。

为什么会这样,以及在两个系统上检索字体大小的正确方法是什么?

2 个答案:

答案 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>