fangyuanning

统计

最新评论

VC2005程序界面使用XP风格

VC2005程序界面使用XP风格 收藏
我把程序从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>

 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ydbcsdn/archive/2009/03/19/4003410.aspx

posted on 2009-07-19 23:45 Pop 阅读(1026) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。