【发布时间】:2013-07-04 21:20:13
【问题描述】:
默认情况下,在 MFC 中,对话框标题栏的字体与系统设置相对应。如何更改字体样式?
【问题讨论】:
标签: windows winapi mfc titlebar
默认情况下,在 MFC 中,对话框标题栏的字体与系统设置相对应。如何更改字体样式?
【问题讨论】:
标签: windows winapi mfc titlebar
这不仅仅是 MFC 的默认设置;它适用于所有 Windows 应用程序。那是因为操作系统会为所有窗口绘制标题栏,操作系统自然会尊重用户配置的设置。
如果你想改变它并覆盖用户的设置(我真的很怀疑你为什么要做这样的事情),那么你需要不绘制窗口的 整个 -客户区(包括标题栏)掌握在自己手中。这是通过处理 WM_NCPAINT message 来实现的(或者我想在 MFC 中,处理名为 OnWmNcPaint 之类的窗口的成员函数)。
但请注意:这是一项相当高级的任务,而且很难做好。此外,它将打破 Aero 主题的玻璃造型和其他半透明效果。我不知道它在 Windows 8 上的作用,因为我还没有尝试过,但我想它也会破坏那里的东西。
要使其与 Aero 主题一起正常工作,您需要在运行时检测 Aero 是否已启用,如果已启用,jump through some additional hoops。如果 Aero 主题未启用,那么您将回退到处理 WM_NCPAINT 消息的旧方法。
我有没有提到我不推荐这个?这是一个全局系统设置,而不是打算被应用程序覆盖的东西是有原因的。如果用户想在他们的标题栏中使用丑陋的字体,那是他们的特权。
【讨论】: