将 VS6 MFC 对话框应用程序外观升级到 VS2008

Posted

技术标签:

【中文标题】将 VS6 MFC 对话框应用程序外观升级到 VS2008【英文标题】:Upgrade appearance of VS6 MFC dialog application to VS2008 【发布时间】:2011-05-24 01:29:58 【问题描述】:

我正在将一个 VS6 MFC 对话框应用程序更新到 VS2008。更新代码很容易,但对话框仍然具有老式的 VS6 外观。例如,组框有方形边缘并且是深灰色的。而不是 VS2008 应用程序 Group Box 的圆角和浅灰色。

如何强制我的应用程序使用 VS2008 MFC 对话框应用程序更现代的外观?

【问题讨论】:

看看这个帖子,告诉我们它是否能解决您的问题:***.com/questions/4582038/… 或者这个:***.com/questions/6078159/… 将应用程序编译为非 unicode 应用程序也可能是一个问题:请参阅this 问题的第二个答案。 @Mark,谢谢,这正是我想要的! 【参考方案1】:

一个新的 MFC 项目会将以下内容添加到 stdafx.h:

// Define manifest directives to match platform
#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_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

我还将以下内容添加到我的项目中,以明确链接到 UXTHEME.LIB,其中子类基本控件以添加主题支持:

#ifdef _UXTHEME_H_
#pragma message( "Including uxtheme.lib for linking" )
#pragma comment(lib, "uxtheme.lib")
#endif

【讨论】:

以上是关于将 VS6 MFC 对话框应用程序外观升级到 VS2008的主要内容,如果未能解决你的问题,请参考以下文章

使用 VS6 C++ GUI 编辑器、MFC 以屏幕(像素)为单位调整全屏窗口大小?

升级后的 MFC 应用程序看起来仍然很旧

如何从 VS2008 中的 C++ MFC 对话框中的日期/时间小部件中提取数据

从 C# 调用非托管 C++ VS 6.0 MFC dll

IsWindow(activeX.GetSafeHwnd()) 升级到 VS2010 后总是 false

如何将 VC++6.0 项目升级到 VS2010?