2008-10-19 56 views
2

什麼是Win32 API調用以確定用於說菜單的系統範圍字體(特別是顏色)。確定Windows系統寬字體

這將相當於進入外觀設置 - 高級 - 然後選擇菜單作爲要查看的項目。

我可以使用GetSysColor查找各種系統級窗口元素的顏色,但找不到字體的等效項。

回答

3

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

0

在C#中,有Control.DefaultFont,對於本機訪問,this blog描述了獲取它的win32 API調用。 API調用是SystemParametersInfo()。

0

您可以使用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)。