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

Windows 如何更改对话框的字体样式';MFC中的标题栏,windows,winapi,mfc,titlebar,Windows,Winapi,Mfc,Titlebar,默认情况下,在MFC中,对话框标题栏的字体与系统设置相对应。如何更改字体样式?这不仅仅是MFC默认设置;它适用于所有Windows应用程序。这是因为操作系统为所有窗口绘制标题栏,并且操作系统自然尊重用户配置的设置 如果您想更改该设置并覆盖用户的设置(我真的很怀疑您为什么要这样做),那么您需要将窗口的整个非客户区(包括标题栏)的图形掌握在自己手中。这是通过处理(或者我假设在MFC中,处理名为OnWmNcPaint的窗口的成员函数)来实现的 但要预先警告:这是一项相当高级的任务,而且很难做到正确。此

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

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

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

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

要使其与Aero主题正常工作,您需要在运行时检测Aero是否已启用,以及是否已启用。如果未启用Aero主题,则返回到处理
WM\NCPAINT
消息的旧方法

我说过我不推荐这个吗?这是一个全局系统设置,而不是由应用程序覆盖的设置,这是有原因的。如果用户想在标题栏中使用难看的字体,那么这是他们的特权