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

问题描述 投票:2回答:1

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

windows winapi mfc titlebar
1个回答
7
投票

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

如果您要更改它并覆盖用户的设置(我真的很想问为什么要这样做),那么您将需要绘制窗口的entire非工作区(其中包括标题栏)。这是通过处理WM_NCPAINT message实现的(或者我想在MFC中处理名为WM_NCPAINT之类的窗口的成员函数)。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.