原址:http://blog.csdn.net/ydbcsdn/archive/2009/03/19/4003410.aspx
我把程序从VC6和 VS2003 移植到VS2005时, 遇到了一些问题, 这里讲的是XP风格化的问题:
为了实现界面的XP风格化, 需要有一个manifest文件XPStyle.manifest(见附文).
可以添加到项目资源中, .rc文件中会添加一个ID:1 type:manifeset的资源;
可是, 这个资源ID在VC2005里会提示资源冲突(VC2003不会冲突).
在百度搜索, 发现了一个网友提供的方案: "项目属性"--"清单工具"--"输入和输出"--"嵌入清单"--"否" ;
但是, 这个方案对我来说有不足, 会引起其他问题, 比如动态链接MFC的程序, 执行时会提示找不到MFC库文件,
可我的电脑可是装了VS2005的,怎么没有库? 试了几次, 就是这个清单的问题.
如果选择不生成清单文件, 那么界面风格就不是XP化的.
查MSDN后, 发现MSDN已经提供了解决方法:
在 Visual Studio 开发环境中设置此链接器选项
打开此项目的“属性页”对话框。有关详细信息,请参见设置 Visual C++ 项目属性。
单击“链接器”文件夹。
单击“嵌入的 IDL”属性页。
修改“类型库资源 ID”属性。(我设置为100,OK!)
这种方案也算是个好方案, 但是需要去修改.RC文件里面的资源ID.
最后推荐一种方法:
不要将manifest文件添加到项目资源中, 有两种做法:
1. 在"项目属性"--"清单工具"---"输入和输出"---"附加清单文件"--在里面填入XML文件的位置;
比如我的文件位置: $ (ProjectDir)\res\XPStyle.manifest
2. 直接把文件添加到项目的文件列表中(不是导入到资源中).
[附manifest文件内容]
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Windows.M8000"
type="win32"
/>
<description>SetM8000</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
本人检验,最后推荐这种方法确实有效,谢过。