确定Windows系统宽字体
问题描述:
什么是Win32 API调用以确定用于说菜单的系统范围字体(特别是颜色)。确定Windows系统宽字体
这将相当于进入外观设置 - 高级 - 然后选择菜单作为要查看的项目。
我可以使用GetSysColor查找各种系统级窗口元素的颜色,但找不到字体的等效项。
答
GetSysColor(COLOR_MENUTEXT)为您提供菜单字体颜色。
SystemParametersInfo将允许您恢复某些字体信息,同样GetStockObject用于在设备上下文上绘图。
但系统字体(可能)是Tahoma(在XP/W2K上)或MS Sans Serif,具体取决于您如何设置对话框。
查看http://blogs.msdn.com/oldnewthing/archive/2005/02/04/366987.aspx了解更多。
答
您可以使用SystemParametersInfo
找到这些字体:
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ...)
返回包含LOGFONT
structures为NONCLIENTMETRICS
structure:
-
lfCaptionFont
- 同时用于 “活动标题栏” 和 “非活动标题栏” 字体
-
lfSmCaptionFont
- 用于小标题栏的字体,“调色板标题” -
lfMenuFont
- 菜单栏中使用的字体秒。 -
lfStatusFont
- 状态栏和工具提示中使用的字体 -
lfMessageFont
- 消息框中使用的字体。
SystemParametersInfo(SPI_GETICONTITLELOGFONT, ...)
返回一个LOGFONT
结构的文字伴随图标。
在C#/。NET可以使用System.System.Drawing.SystemFonts
class(的WinForms)或System.Windows.SystemFonts
class(WPF)。
`SPI_GETNONCLIENTMETRICS`和`SPI_GETICONTITLELOGFONT`似乎是传递给`SystemParametersInfo`的相关键 – CodesInChaos 2016-02-11 11:30:01