确定Windows系统范围的字体

时间:2008-10-19 04:06:21

标签: winapi

用于确定菜单的系统范围字体(特别是颜色)的Win32 API调用是什么。

这相当于进入外观设置 - 高级 - 然后选择菜单作为要查看的项目。

我可以使用GetSysColor查找各种系统范围的窗口元素的颜色,但找不到字体的等效颜色。

3 个答案:

答案 0 :(得分:3)

GetSysColor(COLOR_MENUTEXT)为您提供菜单字体颜色。

SystemParametersInfo将允许您恢复一些字体信息,同样GetStockObject用于在设备上下文中绘图。

但系统字体(可能)是Tahoma(在XP / W2K上)或MS Sans Serif,具体取决于您设置Dialog的方式。

有关详情,请参阅http://blogs.msdn.com/oldnewthing/archive/2005/02/04/366987.aspx

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ...)返回包含NONCLIENTMETRICS structureLOGFONT structures

  • lfCaptionFont - 用于两者的字体" Active Title Bar"和"非活动标题栏"
  • lfSmCaptionFont - 用于小标题栏的字体,"调色板标题"
  • lfMenuFont - 菜单栏中使用的字体。
  • lfStatusFont - 状态栏和工具提示中使用的字体
  • lfMessageFont - 消息框中使用的字体。

SystemParametersInfo(SPI_GETICONTITLELOGFONT, ...)会为带有图标的文字返回LOGFONT结构。

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