MFC下让控件具有XP风格

来源:互联网 发布:java培训机构课程 编辑:程序博客网 时间:2024/05/10 02:40

MFC下让控件具有XP风格(美化)

此方法适用于VC6,VS2003,和VS2005。


如果你想让VS6, VS2003,的MFC程序拥有XP风格(#add VS2005自动为xp风格)那么就学习下面的方法吧

注:此方法必须是用VC6编译,vs2005转换编译vc6.0的会报错, 自动是xp风格(那么2005如何使用vc6风格呢?)

 

微软同学永远是个把简单问题复杂化的孩子,这不,当年为了在 Windows XP 中同时支持两套控件风格(新的 XP 风格和旧的 95/98 风格),“发明”了 .manifest 这么个玩意,使以前的老程序也能自动使用上新的控件风格。

然而在 VS 里,微软并不是总是默认帮我们自动生成这个破玩意儿。最早的办法就是手写一个 .manifest XML 文件,不过这个办法在 VS 2005 编译出来的程序里似乎并不起作用。当然,新方法总是随之而出的,而且很“简单”(绕了一大圈又回来了):

在 Project Properties 对话框的 Configuration Properties | Linker | Manifest File | Additional Manifest Dependencies 选项里,填入:

 "type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='6595b64144ccf1df' language='*'"

(#add 此法验证有效)只试过这一种

方法一:

试了没用
1.首先确认你在Windows XP下,因为如果在98或2K下,那除非自己重画画所有界面,要不基本上是无法实现XP风格的。

Code:

<?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.dummy"
type="win32" 
/> 
<description>Your app description here</description> 
<dependency> 
<dependentAssembly> 
<assemblyIdentity 
type="win32" 
name="Microsoft.Windows.Common-Controls" 
version="6.0.0.0" 
processorArchitecture="X86" 
publicKeyToken="6595b64144ccf1df" 
language="*" 
/> 
</dependentAssembly> 
</dependency> 
</assembly>


不要问我这段代码是什么意思,我也不知道,这段代码其实和任何一种试图实现XP风格时用的XML代码没有本质区别,几乎是一样的。粘贴进去时候存盘,名字随便取一个,反正名字到后面还是需要修改的。 

3.假设在你的目录c:\abc下有一个可执行文件abc.exe,我们把刚才建立的那个XML的文件拷贝到c:\abc下,并把名字改为 abc.exe.manifest,这时候你可以运行abc.exe,看看是不是已经具有了XP风格了?依次类推,在每一个你想改为XP风格的程序的统一 目录里建立一个上面说的XML文件,并把名字改为可执行文件的名字加上".manifest"的扩展名(注意,不要把那个exe去掉,就可以了,你可以试 着在MSDEV.exe所在目录中搞一个medev.exe.manifest的XML文件,看看VC起了什么变化吧(#add 并未成功,会有未找到MFC80D.DLL错误).
连资源编辑器里的对话框都变的漂亮了



方法二:(这种方法我测试可以成功,但是会影响保存的内容,保存成乱码!)
首先在RES目录下建一个文件,命名Master.manifest然后用记事本打开放入

Code:

<?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.dummy"
type="win32" 
/> 
<description>Your app description here</description> 
<dependency> 
<dependentAssembly> 
<assemblyIdentity 
type="win32" 
name="Microsoft.Windows.Common-Controls" 
version="6.0.0.0" 
processorArchitecture="X86" 
publicKeyToken="6595b64144ccf1df" 
language="*" 
/> 
</dependentAssembly> 
</dependency> 
</assembly>


保存.. 

然后VC6导入资源,把这个新建的文件导入,类型为24 
保存.. 

用记事本打开rc文件, 找到自定义资源的地方 
改成如下句子 
IDR_MANIFEST 24 MOVEABLE PURE "res\\Master.manifest" 

MOVABLE PURE是一定不能少的..保存 
进入VC6, 把这个自定义资源IDR_MANIFEST的ID改为1(没有引号) 



0 0