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

如何让Win32使用windowsxp风格的字体

  •  3
  • iksemyonov  · 技术社区  · 14 年前

    1 回复  |  直到 14 年前
        1
  •  5
  •   Community Ian Goodfellow    7 年前

    你可以用 SystemParametersInfo 具有 SPI_GETNONCLIENTMETRICS GetStockObject http://msdn.microsoft.com/en-us/library/dd144925(VS.85).aspx ). 函数将检索 NONCLIENTMETRICS http://msdn.microsoft.com/en-us/library/ff729175(v=VS.85).aspx )包含您需要的所有信息:

    typedef struct tagNONCLIENTMETRICS {
      UINT    cbSize;
      int     iBorderWidth;
      int     iScrollWidth;
      int     iScrollHeight;
      int     iCaptionWidth;
      int     iCaptionHeight;
      LOGFONT lfCaptionFont;
      int     iSmCaptionWidth;
      int     iSmCaptionHeight;
      LOGFONT lfSmCaptionFont;
      int     iMenuWidth;
      int     iMenuHeight;
      LOGFONT lfMenuFont;
      LOGFONT lfStatusFont;
      LOGFONT lfMessageFont;
    #if (WINVER >= 0x0600)
      int     iPaddedBorderWidth;
    #endif 
    } NONCLIENTMETRICS, *PNONCLIENTMETRICS, *LPNONCLIENTMETRICS;
    

    一个示例,如果您知道如何在窗口/控件中创建和设置字体 LOGFONT 参数请参见示例末尾的 change the default window font in a win32 windows project ,但使用do 对数字体 不是来自 GetStockObject(DEFAULT_GUI_FONT) 系统参数信息 具有 SPI\u GETNONCLIENTMETRICS公司 而不是参数。