0

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

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

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

4

2 回答 2

1

您是否正在设置tocbSize的成员?根据MSDN,您需要运行时系统版本检查,并减去在 Windows XP 下运行时的大小。NONCLIENTMETRICSsizeof(NONCLIENTMETRICS)iPaddedBorderWidth

于 2011-03-22T03:17:05.163 回答
0

我不知道 100% 正确答案,但根据 MSDN,零值对 lfHeight 和 lfWidth 都有特殊含义:

这取自 MSDN,文章Windows GDI,“LOGFONT”

lfHeight - 如果为 0 - 字体映射器在搜索匹配项时使用默认高度值。

lfWidth - 如果 lfWidth 为零,则将设备的纵横比与可用字体的数字化纵横比进行匹配,以找到最接近的匹配,由差异的绝对值确定。

于 2009-06-05T14:36:30.137 回答