文章原创,转载请注明出处
默认情况下用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