【发布时间】:2013-01-09 16:53:47
【问题描述】:
我目前正在尝试根据当前字体重新调整应用程序的字体大小,为此我将使用WM_GETFONT 获取字体并使用公式重新调整大小输入字体的宽度和高度,问题是它的返回值是系统字体,我不知道那个字体的规格。
谁能告诉我如何获取系统字体的规格?不同操作系统的系统字体是否不同?
【问题讨论】:
我目前正在尝试根据当前字体重新调整应用程序的字体大小,为此我将使用WM_GETFONT 获取字体并使用公式重新调整大小输入字体的宽度和高度,问题是它的返回值是系统字体,我不知道那个字体的规格。
谁能告诉我如何获取系统字体的规格?不同操作系统的系统字体是否不同?
【问题讨论】:
您可以使用以下代码为HFONT 检索LOGFONTstructure:
LOGFONT lf = { 0 };
::GetObject( hFont, sizeof( lf ), &lf );
这样您就拥有了所需的所有信息,并且可以只更改您想要更改的部分。要获得HFONT 回复,您可以使用CreateFontIndirect:
HFONT hFontCustom = ::CreateFontIndirect( &lf );
除了使用WM_GETFONT,您还可以考虑使用SystemParametersInfo 来检索已经具有LOGFONT 结构的NONCLIENTMETRICS structure,您可以复制、修改和与CreateFontIndirect 一起使用,如上图所示。
至于您的第二个问题,字体设置是针对每个用户的设置,因此即使在同一安装中两个不同的用户登录时,它也可能有所不同。
【讨论】: