确定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了解更多。

+0

`SPI_GETNONCLIENTMETRICS`和`SPI_GETICONTITLELOGFONT`似乎是传递给`SystemParametersInfo`的相关键 – CodesInChaos 2016-02-11 11:30:01

在C#中,有Control.DefaultFont,对于本机访问,this blog描述了获取它的win32 API调用。 API调用是SystemParametersInfo()。

您可以使用SystemParametersInfo找到这些字体:

SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ...)返回包含LOGFONT structuresNONCLIENTMETRICS structure

  • lfCaptionFont - 同时用于 “活动标题栏” 和 “非活动标题栏”
  • 字体
  • lfSmCaptionFont - 用于小标题栏的字体,“调色板标题”
  • lfMenuFont - 菜单栏中使用的字体秒。
  • lfStatusFont - 状态栏和工具提示中使用的字体
  • lfMessageFont - 消息框中使用的字体。

SystemParametersInfo(SPI_GETICONTITLELOGFONT, ...)返回一个LOGFONT结构的文字伴随图标。


在C#/。NET可以使用System.System.Drawing.SystemFonts class(的WinForms)或System.Windows.SystemFonts class(WPF)。