参考:http://www.cnblogs.com/pkill/archive/2010/07/09/1774527.htmlhttp://wutiam.net/2009/08/manifest-dependencies-in-visual-studio-2005/总结如下:1、自动生成XXX.exe.manifest文件1)编写内容。程序使用unicode字符集,stdafx.h 中加入
#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'"")
#else
#pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"")
#endif
#endif
若要取消unicode限定,只需修改为:
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'"")
#else
#pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"")
#endif
注:这些语句也可不写在stdafx.h中,直接在 “工程属性页-》清单工具-》输入输出 -》附加清单文件”中添加内容。
对应X86就添加:
type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='6595b64144ccf1df' language='*'
不过可能灵活性可能不够。
2)然后就是一些设置:
☆ 工程属性页-》清单工具-》输入输出
嵌入清单: 是
输出清单文件: $(IntDir)$(TargetName)$(TargetExt).embed.manifest
清单资源文件: $(IntDir)$(TargetName)$(TargetExt).embed.manifest.res
☆ 链接-》清单文件-》生成清单文件 设为“是”
这样清单文件就会嵌入到exe文件中,单独执行exe就可以实现xp风格。
或者,也可以设置“嵌入清单”为“否”
这样就会单独生成个“程序名.exe.manifest"文件,只有与exe文件放在同一目录下,
才能实现xp风格。发布时需要同时带上.manifest文件。
2、自己创建并引入一个.manifest文件资源
1) 创建一个.manifest文件的资源.
在res/文件夹下创建一个跟以程序名加.manifest的文件, 如果程序为test.exe, 则创建test.exe.manifest
文件内容同上面生成的.manifest文件:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*' />
</dependentAssembly>
</dependency>
</assembly>
注意要使用utf-8编码保存。
2) 将新定义的资源加入到.rc2文件中, 类型设为24.
打开res/文件夹下的.rc2文件, 在其中加入如下定义:
1 24 MOVEABLE PURE "res/test.exe.manifest"
其中的文件地址按1)步中修改的设置即可.注意资源ID值一定要为1,当然可用定义为1的宏表示。
之后编译即可, 为了使程序界面可能充分利用系统的界面特性, 可以将界面字体设置为TrueType类型的, 利用Windows XP等系统的屏幕字体平滑特性.