inXP提供了与以往版本的Windows不同的界面风格,如窗口 圆角 、 按钮 样式等,但是用VC 生成的程序在WinXP下运行时并不是自动形成这种界面风格,按钮 还是和在Win2k下看一样,我们可以使用一个简单的办法让它变脸。
秘密在于一个.mainfest文件,从VC 71生成的工程的res文件夹中就可以找到它,是个纯文本文件,内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
我们把它作为资源引入工程,引入时Resource Type填写“24”,然后把资源ID改成“1”
用这个方法可以很方便的对已有的工程进行改造,VC 6和VC 71都可以,在Win2k环境下,程序还是老样子,到XP下就自动显示新样式。
关键点应该在对Microsoft.Windows.Common-Controls 6.0.0.0版的加载上,不过为什么资源类型要定为24,ID要改成1就不明白了,估计是操作系统自己的限制。
其他
http://support.microsoft.com/kb/830033/zh-cn