0

我刚刚将一个 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,据我所知,我不需要清单文件来显示新样式。有任何想法吗?

4

1 回答 1

0

我玩游戏迟到了,但对我来说,问题是一个名为/ALLOWISOLATION此处描述)的小型链接器设置。

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

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

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

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

于 2018-07-28T08:20:11.857 回答