在MFC中,默认情况下,对话框标题栏的字体与系统设置相对应。如何更改字体样式?
这不仅是MFC的默认设置,对于all Windows应用程序,这种方式起作用。这是因为操作系统绘制所有窗口的标题栏,并且操作系统自然会尊重用户已配置的设置。
如果您要更改它并覆盖用户的设置(我真的很想问为什么要这样做),那么您将需要绘制窗口的entire非工作区(其中包括标题栏)。这是通过处理WM_NCPAINT
message实现的(或者我想在MFC中处理名为WM_NCPAINT
之类的窗口的成员函数)。
但是要事先警告:这是一项相当高级的任务,很难做到正确。此外,它将破坏Aero主题的玻璃样式和其他半透明效果。我还不知道它在Windows 8上的作用,因为我还没有尝试过,但是我想它也能破坏它的功能。
为了使其能够与Aero主题一起正常使用,您需要在运行时检测是否启用了Aero,如果启用,则检测为OnWmNcPaint
。如果未启用Aero主题,那么您将退回到处理jump through some additional hoops消息的旧方法。
我提到我不建议这样做吗?原因是这是全局系统设置,而不是应用程序打算覆盖的内容。如果用户想在标题栏中使用丑陋的字体,那么这就是他们的特权。