您的位置:首页 > 其它

使Windows程序拥有XP风格的界面,不使用皮肤控件

2012-04-10 17:17 381 查看
在使用VC6编译出来的软件界面只具有传统Windows2000风格的界面,并不美观,如果要使程序具有漂亮的界面,使用皮肤控件不失为一个好的选择,但是在我使用的皮肤控件中,占用资源是一方面,还会有这样那样的问题,比如有些菜单不能换肤,如果软件使用了定时器则会使界面有不能预知的后果。

以前发现可以写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成test.exe.manifest,并将其和test.exe放在同一个目录里,这样test.exe在XP或2003(必须启动Themes服务)下运行时就会呈现XP界面风格。但是很明显这个.manifest文件必须与.exe文件在同一目录才能使程序变换风格,很不方便

当然你使用VS2005或更高版本的开发环境,直接使用Unicode字符集编译程序,也能得到具有Xp界面风格的软件。

但是在多字节字符集编译的情况下,怎样使软件具有Xp风格的界面呢???

今天终于找到一个很简单的使美化Windows软件的方法,就是使用一个配置文件,然后直接把这个文件编译进软件中,方法就是把它加入到程序的资源文件中,实现的原理未知。下面分享一下。

1、建立一个文件,内容如下,建立好了,以后就可以拷贝到其它地方使用了,不用重新建立。

<?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>

保存为XPStyle.manifest,文件后缀要为*.manifest

2、接下来可以使用Ultraedit或记事本打开软件的资源文件,一般为***.rc2,在里面加入一行(红色字体的文字为手工加入的内容)

//
// PiggyIOCPServer.RC2 - Microsoft Visual C++ 不会直接编辑的资源
//

#ifdef APSTUDIO_INVOKED
#error 此文件不能用 Microsoft Visual C++ 编辑
#endif //APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////
// 在此处添加手动编辑的资源...

/////////////////////////////////////////////////////////////////////////////
1 24 "XPStyle.manifest"


最后加上的那一行,“1”代表资源ID,必须是“1”。“24”代表资源类型,我想我们对RT_ACCELERATOR、RT_BITMAP、RT_MENU、RT_STRING等资源都非常熟悉,而“24”实际上是RT_MANIFEST。最后面引号中的内容表示
XPStyle.manifest 这个文件相当与工程目录的路径。 

3、重新编译

如果是在VS2005或更高级的开发环境中,都不用在**.rc2文件中手工增加代码,只需要把建立好的"XPStyle.manifest"这个文件添加到工程中,然后重新编译就可以了。。

关于要使软件具有Vista风格的界面,期待大家分享一下。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: