COM组件里面的对话框,使用Theme
使用VC2005开发COM组件,里面的对话框,正常情况下,可以使用Theme,但是在IE里面调用的时候,却无法正常显示Theme。
搜索了一些资料,发现理论上只要在stdafx.h里面最开始,增加下面的一行就可以了
#define ISOLATION_AWARE_ENABLED 1
但是我测试了很多次,发现不行,最终找到原因:
VC2005的MFC DLL,已经默认生成了manifest文件,但是内容不符合要求。
<?xml version=’1.0′ encoding=’UTF-8′ standalone=’yes’?>
<assembly xmlns=’urn:schemas-microsoft-com:asm.v1′ manifestVersion=’1.0′>
</assembly>
没有指定comctrls版本。
因此,自己编写一个manifest,放在vcproject文件目录里面,内容如下:
<?xml version=’1.0′ encoding=’utf-8′ standalone=’yes’?>
<assembly xmlns=’urn:schemas-microsoft-com:asm.v1′ manifestVersion=’1.0′>
<dependency>
<dependentAssembly>
<assemblyIdentity type=”win32″ name=”Microsoft.Windows.Common-Controls” version=”6.0.0.0″ processorArchitecture=”X86″ publicKeyToken=”6595b64144ccf1df” language=”*” />
</dependentAssembly>
</dependency>
</assembly>
然后在project属性里面,找到Manifest Tool->Input and Output,修改Additional Manifest Files,写上这个文件名,例如:./CyberArticleIE.ex.manifest (Debug/Release都要更改)。
重新编译工程,就可以正常显示Theme了。
最近评论