我刚刚将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
,据我所知,我不需要清单文件才能显示新样式。有什么想法吗?
答案 0 :(得分:0)
我迟到了游戏,但是对我来说,问题是一个很小的链接器设置称为/ALLOWISOLATION
(description here)。
此链接器设置必须设置为Yes
,否则甚至不会考虑清单。而且没有清单意味着将加载v5.82通用控件DLL
而不是v6版本。
您可以从调试器模块中查看加载/卸载消息(如果适用)(版本号与条目一起记录)。
奇怪的是,应用程序仍然显示为“半主题”。例如。您可以循环浏览XP和Office主题,但是例如,按钮将没有任何现代样式。可能是其他DLL(uxtheme
?)。
图像列表中的图像也会出现锯齿(即使图标严格为32bpp,也没有alpha通道)。