代码之家  ›  专栏  ›  技术社区  ›  zadam

确定Windows系统范围的字体

  •  2
  • zadam  · 技术社区  · 17 年前

    win32 api调用是什么来确定系统范围内的菜单字体(特别是颜色)。

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

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

    3 回复  |  直到 10 年前
        1
  •  3
  •   David L Morris    17 年前

    getsyscolor(color_menuText)为您提供菜单字体颜色。

    SystemParameterInfo将允许您恢复一些字体信息,类似于GetStockObject,以便在设备上下文中绘制。

    但系统字体(可能)可能是Tahoma(在XP/W2K上)或MS Sans-serif,这取决于您如何设置对话框。

    http://blogs.msdn.com/oldnewthing/archive/2005/02/04/366987.aspx 更多。

        2
  •  0
  •   Phil Reif    17 年前

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

        3
  •  0
  •   CodesInChaos    10 年前

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

    SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ...) 返回A NONCLIENTMETRICS structure 包含 LOGFONT structures 为:

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

    SystemParametersInfo(SPI_GETICONTITLELOGFONT, ...) 返回A Logo字体 与图标关联的文本的结构。


    在c/.net中,您可以使用 System.System.Drawing.SystemFonts class (winforms)或 System.Windows.SystemFonts class (WPF)。