如何在MFC中更改对话框标题栏的字体样式

时间:2013-07-07 10:45:02

标签: windows winapi mfc titlebar

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

1 个答案:

答案 0 :(得分:4)

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

如果你想改变它并覆盖用户的设置(我真的问你为什么要做这样的事情),那么你需要绘制窗口的整个非-client area(包括标题栏)掌握在自己手中。这是通过处理WM_NCPAINT message(或者我想在MFC中处理窗口的成员函数,如OnWmNcPaint)来实现的。

但要预先警告:这是一项相当先进的任务,很难做到正确。此外,它还将打破Aero主题的玻璃造型和其他半透明效果。我不知道它在Windows 8上做了什么,因为我还没有尝试过,但我想它也打破了它。

要使其与Aero主题一起正常运行,您需要在运行时检测是否已启用Aero,如果是,则jump through some additional hoops。如果未启用Aero主题,则您将回退到处理WM_NCPAINT消息的旧方法。

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