确定Windows系统宽字体

zad*_*dam 5 winapi

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

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

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

Cod*_*aos 6

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

SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ...)返回一个包含以下结构的NONCLIENTMETRICS结构LOGFONT

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

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


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


Dav*_*ris 3

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

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

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

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