方法一:利用XPButton类实现
具体操作步骤如下:
1.网上下载XPButton类;请参考《【工程源码】XPButton源码-XP风格按钮》
2.创建基于对话框的MFC工程Test,将下载的XPButton.cpp和XPButton.h放到当前工程目录中,通过Project->Add to project->Add file to project将XPButton.cpp和XPButton.h导入到工程中;
3.在CTestDlg.h添加头文件 #include "XPButton.h";
4.关闭工程,将工程目录下的.clw文件删除,重新打开工程,为对话框添加一个按钮。通过类向导为此按钮控件添加一个变量,变量类型选择CXPButton;
(在此步骤中如果不删除.clw文件,则在选择变量类型的时候下拉列表中不会出现CXPButton选项,可以选择CButton,然后手动到CTestDlg.h中将变量类型修改为CXPButton).
5.编译并运行程序就看到有XP风格的按钮;
注意:此方法只能使关联了CXPButton变量的按钮具有XP风格,对于没有关联的按钮还保持原来的样式。
效果如下:
方法二:利用.manifest文件实现
关于让程序界面实现XP风格,在网上有很多方法,大多数的作法都是写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成test.exe.manifest,并将其和test.exe放在同一个目录里,这样test.exe在XP下运行时就会呈现XP界面风格。
把一下内容复制到.txt中,然后把txt改名为 “程序名.manifest”就可以了。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity name="XP style manifest" processorArchitecture="x86" version="1.0.0.0" type="win32"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
方法三:利用.manifest文件实现
虽然方法二可以实现XP按钮风格,但是.exe和.manifest文件必须在同一个目录下,还是有些不方便。我们可以把.manifest文件编译到资源文件中,编译后生成.res文件,link后自然就和.exe文件“合”到一起了。
首先把XPStyle.manifest文件复制到工程所在的目录中,再用记事本打开资源文件(.rc),在文件最后加上一行:1 24 “XPStyle.manifest”。
( 这里解释一下,最后加上的那一行,“1”代表资源ID,必须是“1”。“24”代表资源类型为RT_MANIFEST的资源,引号里面的是要加入的资源名称)
编译并运行工程,就可以看到XP风格的按钮效果了。
这回编译好的.exe文件拿到哪都是XP风格的界面,不再依靠.manifest文件了,并且对于所有控件都可以实现XP风格。当然了,必须在XP或2003系统下才可以。