更改 MFC 应用程序的视觉样式 [重复]

Posted

技术标签:

【中文标题】更改 MFC 应用程序的视觉样式 [重复]【英文标题】:Changing Visual style of a MFC application [duplicate] 【发布时间】:2017-05-02 10:53:59 【问题描述】:

我有一个基于 MFC 的应用程序,它看起来太旧了,可能主题是本机窗口。我知道在创建新的 MFC 应用程序时,可以选择不同的视觉样式。

我现在想选择不同的视觉风格,可能是Windows 7。我该怎么做?

编辑 1:该应用程序是用 Visual Studio 2005 编写的。因此外观太旧了。我已将其迁移到 Visual Studio 2015,但外观仍然相同。

【问题讨论】:

查看示例msdn.microsoft.com/en-us/library/bb983962(v=vs.100).aspx 如果您在 Windows 7 上运行,“本机”样式看起来与“Windows 7”样式相同。应用程序“看起来太旧”是什么意思?那不是一回事。 MFC 的内置主题既丑陋又骇人。无论如何,功能比形式更重要。 @CodyGray 该代码是在 VS 2005 中编写的。我在 VS 2015 (Windows 7) 上使用它。 您可能正在寻找this Windows 8 已经问世将近 5 年了。默认的 Windows 7 UI 主题开始显得过时了。此外,MFC 应用程序应该简单地使用标准主题,启用视觉样式,并尊重用户对视觉上令人愉悦的选择。 【参考方案1】:

在 stdafx.h 中有一些代码:

#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif

你确定它是否有效?如果项目不是 UNICODE,只需注释 #ifdef _UNICODE(和他的一对 #endif)以激活视觉样式...

【讨论】:

以上是关于更改 MFC 应用程序的视觉样式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

更改字符集后 MFC 应用程序的视觉外观发生变化

在 MFC 中更改 CListCtrl 的样式

是否可以更改 MFC MDI 应用程序中主***菜单的位置?

CDialog的标题/标题的字体样式[重复]

Windows 7 中 C++/MFC 对话框的视觉风格?

使用 VisualStateManager 更改按钮样式