日期:2014-05-17  浏览次数:20968 次

VC程序中Windows XP风格程序界面的实现

文章原创,转载请注明出处

默认情况下用MVC++98创建的MFC应用程序的界面使用5.82版本的ComCtrl32.dll中控件,使得其风格为Windows 2000系统的风格,
看上去绘制得比较粗糙。如下图所示:


使用MSVC2008以上的版本默认创建的MFC应用使用的界面为6.0版本的ComCtrl32.dll中控件,使得其风格为Windows XP系统的风格,看上去
更为精细,会更好看些,如下图所示:


不过如果在MSVC2010中将程序的语言字符集由Unicode字符集改为多字节字符集之后,程序的界面也会变为Windows 2000系统的风格。
为了在MVC++98创建的MFC应用程序的界面使用6.0版本的ComCtrl32.dll中控件,使得其为Windows XP系统的风格,需要通过自定义一个manifest清单文件来设置
程序的资源调用。该manifest文件为一个xml文件,默认命名为应用程序可执行文件全名并以manifest为后缀,如application.exe.manifest。
通常可以自己创建和编辑产生该文件,用代码编辑器创建一个文件并输入如下内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    type="win32"
    name="application.exe"
    version="1.0.0.0"
    processorArchitecture="X86"/>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="X86"/>
    </dependentAssembly>
  </dependency>
然后保存为自己的应用程序可执行文件全名并以manifest为后缀的文件即可。将该文件放在自己程序的可执行文件路径下,重新打开程序即可看到
程序的界面风格变化为Windows XP风格了,控件均为圆角矩形之类的。

 

为了避免程序可执行文件必须和对应的manifest文件在同一路径下,不方便移植,可以通过如下两种方法把该manifest文件编译到应用程序文件之中。
第一种是直接在VC的IDE中将manifest文件添加到Resource Files之中,然后重新编译应用程序即可。操作过程如下图所示:

第二种是通过VS的IDE在项目属性中直接设置manifest清单文件。将清单文件放置在项目的路径下,然后在“配置属性”->“输入和输出”->“附加清单文件”中输入清单文件名称,然后重新编译即可被编译到程序之中了。如下图所示:

 

参考:

http://www.fengxing.me/?post=56

http://hi.baidu.com/flying2002/blog/item/1ad510b36cd0a9a7d8335a1d.html