При создании управления (например, средства редактирования) на лету использование CreateWindow, это обычно начинает с ужасным (boldish гротесковый шрифт) шрифт.
Обычно я вок вокруг этого путем захвата шрифта родительского диалогового окна и установки его на управление - я не могу даже сказать, является ли это хорошей идеей.
Как я "по закону" выбираю правильный шрифт?
"Правильный" способ получить шрифт, используемый в диалоговых окнах, таких как окна сообщений и т.д. будет функция 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()
чтобы узнать, какие еще общесистемные параметры вы можете получить.