mfc 11应用旧样式按钮和进度条

时间:2013-10-16 07:15:59

标签: visual-studio-2012 mfc manifest aero comctl32

我刚刚将vs2010 mfc应用更新到vs2012,我遇到了新的闪亮风格窗口按钮和进度条没有出现的问题,它们显示为Windows 2000样式按钮。

我的stdafx.h文件中有以下代码:

#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

我正在调用InitCommonControlsEx,据我所知,我不需要清单文件才能显示新样式。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我迟到了游戏,但是对我来说,问题是一个很小的链接器设置称为/ALLOWISOLATIONdescription here)。

此链接器设置必须设置为Yes,否则甚至不会考虑清单。而且没有清单意味着将加载v5.82通用控件DLL而不是v6版本。

您可以从调试器模块中查看加载/卸载消息(如果适用)(版本号与条目一起记录)。

奇怪的是,应用程序仍然显示为“半主题”。例如。您可以循环浏览XP和Office主题,但是例如,按钮将没有任何现代样式。可能是其他DLL(uxtheme?)。

图像列表中的图像也会出现锯齿(即使图标严格为32bpp,也没有alpha通道)。