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

All*_*lan 2 windows winapi mfc titlebar

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

Cod*_*ray 7

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

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

但是请提前警告:这是一项相当高级的任务,很难做到正确。此外,它将破坏Aero主题的玻璃样式和其他半透明效果。我还不知道它在Windows 8上的作用,因为我还没有尝试过,但是我想它也会破坏那里的功能。

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

我是否提到我不建议这样做?有一个原因是这是全局系统设置,而不是应由应用程序覆盖的设置。如果用户想在标题栏中使用丑陋的字体,那么这就是他们的特权。