WEB开发网
开发学院软件开发VC 让VC程序使用WindowXP的桌面主题风格 阅读

让VC程序使用WindowXP的桌面主题风格

 2007-10-05 20:22:42 来源:WEB开发网   
核心提示:介绍介绍怎样在让普通的程序可以支持WindowsXP的桌面主题风格.最近写了一些简单的小应用,可是跑在我自己的XP系统上感觉很土,让VC程序使用WindowXP的桌面主题风格,因为界面都是WIN95风格的,感觉格格不入,这就是我写的那个小程序,界面很COOL吧,我使用了一些很COOL的XP桌面主题风格,很多程序像WIN

介绍

介绍怎样在让普通的程序可以支持WindowsXP的桌面主题风格.

最近写了一些简单的小应用,可是跑在我自己的XP系统上感觉很土,因为界面都是WIN95风格的,感觉格格不入。我使用了一些很COOL的XP桌面主题风格。很多程序像WINRAR都会随着系统的主题风格改变而改变界面风格。我想MS一定提供了某种机制让应用使用系统的主题风格。查了一下MSDN,原来很容易就可以实现。

WINDOWS把这个叫做“Visual Styles”虚拟风格。我们所用的普通控件都位于系统的ComCtl32.dll当中,这个DLL从版本6开始支持虚拟风格。版本6在XP和2003中是缺省附带的。而且是同时附带了这个DLL的版本5和版本6,以兼容使用老版本的应用。而VS默认编译出来的应用是使用版本5的。这就是为什么直接编译出来的应用在XP下看起来“土土”的。

我们要做的事情就是让应用在ComCtl32.dll版本6有效的情况下,使用版本6,否则使用版本5,以兼容WINXP以前的系统。要达到这个目的很简单。

打开工程的rc文件,最好是用普通的编译器打开,像notepad之类的。在该文件的最后面,在

#endif

行前面加上一行

CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "./res/YourAppName.exe.manifest"

注意将YourAppName改为你的工程名。这个manifest文件可以在工程的res目录下找到。再重新编译你的应用就可以了。

以上是以VS2003 version7.1环境为例。VC6无法自动生成这个manifest文件。如果你使用的是VC6可以自己写一个manifest文件,这是一个XML文件,内容很简单可以在MSDN中查到,或在用VS2003或VS2005生成的工程上找到这个文件,直接拷贝过来,把相应的应用名和版本号改一下就可以直接用了。另外,MSDN中要求调用InitCommonControls()进行初始化。如果你使用的是WTL,框架已经调用了。MFC我没有试过(很久没用MFC了,自从用了WTL之后),照理框架也应该调用的。如果照上述步骤操作后没有反应,你可以自己在CYournameApp类的InitInstance()方法前加上一行InitCommonControls();

注意Yourname是你的工程名,这个函数是普通MFC应用的入口。

另外值得说一下的是,支持虚拟风格的系统(如XP和WIN2003),提供了一个UxTheme.lib库,专门负责控件的外观渲染,也可以查询当前系统选用的主题的诸多细节,如字体大小,颜色,背景等。如果你想自己写一个控件,同时又要支持虚拟风格,那么这个库就是你要研究的对象了。

上面所述的内容,都可以在MSDN中找到。在MSDN中搜索“Visual Styles”主题即可。需要了解更多细节的朋友可以自己看看相应的内容。

这就是我写的那个小程序,界面很COOL吧。其实我只是选用了一个很COOL的XP主题而已。

Tags:VC 程序 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接