2

默认情况下,在 MFC 中,对话框标题栏的字体与系统设置一致。如何更改字体样式?

4

1 回答 1

7

这不仅仅是 MFC 的默认设置;它适用于所有Windows 应用程序。那是因为操作系统会为所有窗口绘制标题栏,操作系统自然会尊重用户配置的设置。

如果您想更改它并覆盖用户的设置(我真的怀疑您为什么要这样做),那么您将需要绘制窗口的整个非客户区(包括标题栏)掌握在自己手中。这是通过处理WM_NCPAINT消息来实现的(或者我想在 MFC 中,处理名为类似 的窗口的成员函数OnWmNcPaint)。

但请注意:这是一项相当高级的任务,而且很难做好。此外,它将打破 Aero 主题的玻璃造型和其他半透明效果。我不知道它在 Windows 8 上做了什么,因为我还没有尝试过,但我想它也会在那里破坏东西。

为了使它与 Aero 主题正常工作,您需要在运行时检测 Aero 是否启用,如果启用,则跳过一些额外的环节。如果 Aero 主题未启用,那么您将回退到处理WM_NCPAINT消息的旧方法。

我有没有提到我不推荐这个?这是一个全局系统设置,而不是打算被应用程序覆盖的东西是有原因的。如果用户想在他们的标题栏中使用丑陋的字体,那是他们的特权。

于 2013-07-07T11:00:24.320 回答