使用内置的manifest描述文件
这种方法可以将manifest文件编译到exe文件当中,发布的时候不需要额外增加一个.manifest文件。
步骤如下:
首先,在程序的RES目录下建一个文件,命名 你的程序.exe.embed.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 >
< 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 >
然后,在VC中导入资源,导入xp.manifest,类型为24,并且修改ID为IDR_MANIFEST。
最后,通过菜单View-Resources Symbol …或者直接修改resource.h,将IDR_MANIFEST的值改为1。
编译后运行,程序就有xp的风格了。
PS:这里我再多解释一下,“1”代表资源ID,可以可以根据自己的上下文定值。“24”代表资源类型,我想我们对RT_ACCELERATOR、RT_BITMAP、RT_MENU、RT_STRING等资源都非常熟悉,而“24”实际上是RT_MANIFEST。