«Правильный» способ получить шрифт, используемый в диалоговых окнах, таких как окна сообщений и т. Д., Будет через функцию SystemParametersInfo()
:
// C++ example
NONCLIENTMETRICS metrics;
metrics.cbSize = sizeof(NONCLIENTMETRICS);
::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS),
&metrics, 0);
HFONT font = ::CreateFontIndirect(&metrics.lfMessageFont);
::SendMessage(ctrlHWND, WM_SETFONT, (WPARAM)font, MAKELPARAM(TRUE, 0));
Не забудьте уничтожить шрифт при уничтожении элементов управления:
::DeleteObject(font);
Вы можете посмотреть документацию MSDN для NONCLIENTMETRICS
и SystemParametersInfo()
, чтобы узнать, какие другие общесистемные параметры вы можете получить.