Вы можете использовать SystemParametersInfo
с параметром SPI_GETNONCLIENTMETRICS
для получения текущего шрифта. SystemParametersInfo будет учитывать текущую тему и предоставляет информацию о шрифтах для заголовков, меню и диалогов сообщений. (См. Примечание к 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
, см. В конце примера из изменение шрифта окна по умолчанию в проекте windows win32 , но используйте do LOGFONT
не из GetStockObject(DEFAULT_GUI_FONT)
, а вместо SystemParametersInfo
с параметром SPI_GETNONCLIENTMETRICS
.