可能重复:
How to set default font for all the windows in a Win32 Application?
Which Font is the default for MFC Dialog Controls?
我讨厌默认的Windows Api Window字体(我认为它是默认的系统字体)。我知道如何更改单个孩子的字体,比如一个按钮。但是有没有办法改变整个应用程序的字体,这样我就不必在程序中的每个小部件上使用 SendMessage(... WM_SETFONT)了?
欢迎使用代码示例。 (我正在使用C ++)
答案 0 :(得分:6)
一种方法是使用EnumChildWindows:
BOOL CALLBACK SetChildFont(HWND hwndChild, LPARAM lParam)
{
HFONT hFont = (HFONT)lParam;
SendMessage(hwndChild, WM_SETFONT, (WPARAM)hFont, TRUE);
}
EnumChildWindows(hwndParent, SetChildFont, (LPARAM)hFont);
答案 1 :(得分:2)
我在这里深入解释所有这些:Which Font is the default for MFC Dialog Controls?绝对需要阅读任何关心如何正确使用UI的Win32开发人员。
无法为整个应用程序设置字体。您可以做的最好的事情是设置父窗口的字体,并利用大多数控件将从其父级继承其字体的事实。为了更加确定这是否有效,您可以编写自己的简单SendMessageToChildren
函数,就像MFC提供的那样,它只是递归地遍历特定父项的子项,并向它们发送WM_SETFONT
消息。 / p>
但WM_SETFONT
确实是你唯一的选择。您无法为背景画笔设置整个类的字体。做到这一点可能具有挑战性,但我同意这是非常重要的尝试。不一致的UI和非专业应用程序的标志是不使用正确的默认GUI字体。通过将面部切换到Segoe UI,但默认大小为9磅,Windows Vista出现了更复杂的事情。