vc6.0程序界面实现XP风格方法
来源:互联网 发布:天猫魔盒网络机顶盒 编辑:程序博客网 时间:2024/05/11 15:46
本文转帖自:http://ily961.bokee.com/3306477.html
关于让自己的程序界面实现XP风格这个问题,在网上的讨论很多,大多数的作法都是写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成test.exe.manifest,并将其和test.exe放在同一个目录里,这样test.exe在XP或2003(必须启动Themes服务)下运行时就会呈现XP界面风格。
有件事情必须说一下,按照上面的方法,test.exe必须先调用InitCommonControls函数(已经废除,不建议使用)或者InitCommonControlsEx函数从comctl32.dll中注册组件类。这一步在VB中是必须的,但是在VC(MFC程序)中,我们好像并没有调用这个函数,可是编译后的程序为什么还能实现XP风格呢?原因是MFC替我们做了这件事。如果我们是让MFC注册的窗口类,它会调用_AfxInitCommonControls函数,而_AfxInitCommonControls的主要操作就是把comctl32.dll装载进来,然后判断.dll文件中有没有InitCommonControlsEx函数,如果有就调用,没有则调用InitCommonControls,到此真相大白。可能有人和我一样,看着以“afx”开头的窗口类名称很不舒服,于是喜欢自己注册窗口类,但在我们注册自己的窗口类时一定要确保调用过InitCommonControlsEx函数,这点一定要记得,如果忘记的话你将会看到一个空白的窗口。
说了这么多,有点跑题了,呵呵。现在回到正题。我上面提到的方法很多网站上都有介绍,但是却有一个致命的缺点,就是必须有那个.manifest文件如影随形,exe文件到哪,它就得到哪,这当然是我们不愿意看到的。有没有办法能把它“合”到exe文件中呢?答案是肯定的,这也正是本文题目中“无负担”三个字的意思。
当然了,那个.manifest文件还是要有的,只不过不是和.exe文件放在同一目录中,而是把它放到资源文件中,编译后生成.res文件,link后自然就和.exe文件“合”到一起了。
首先,请出.manifest文件:
name="XP style manifest"
processorArchitecture="x86"
version="
type="win32"/>
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
大家也看到了,这其实是一个XML文件,打开记事本,复制上面的内容,然后存盘,文件名任意,这里我存为XPStyle.manifest。
然后在VC中新建一个MFC AppWizard(exe)工程,Document/View或Dialog均可,接着把XPStyle.manifest复制到工程所在目录,再用记事本或其它文本编辑工具手动修改工程目录下的资源文件(.rc),在文件最后加上一行:
1 24 "XPStyle.manifest"
在VC中编译并连接工程生成.exe可执行文件,运行一下看看。
就这么简单?就这么简单。 :D
这里我再多解释一下,最后加上的那一行,“
好了,编译后的这个.exe文件拿到哪都可以,都是XP风格的界面,不用再依赖.manifest文件了。哦,当然了,必须在XP或2003系统下才可以。
- vc6.0程序界面实现XP风格方法
- VC6无负担实现XP风格界面
- 关于VC6简单实现xp风格界面
- VC6编写程序具备XP风格方法
- VC6风格转XP风格界面的两种方法
- VC6风格转XP风格界面的两种方法
- VC6.0应用程序实现XP风格简便方法
- VC6 实现XP风格
- 在VC6中编写可在XP中显示XP风格界面的程序
- 在VC6中编写可在XP中显示XP风格界面的程序
- 在VC6中编写可在XP中显示XP风格界面的程序
- 让自己的程序界面实现XP风格的两种方法
- VC程序中Windows XP风格程序界面的实现
- .Net下实现Windows XP风格界面程序
- Visual C++ 6.0中实现XP风格的程序界面。
- vc6.0实现xp风格,gripper does not redraw correctly
- XP环境在VC6.0下使程序直接具有XP风格(XP style)
- XP风格界面的实现
- 20分钟一门课
- 作业又做出来一门了
- 明天考英语
- 英语考完了
- 用java抓取cnproxy代理服务器地址
- vc6.0程序界面实现XP风格方法
- 1. Meet Hadoop
- 2.MapReduce
- linux下面tar gzip zip bzip使用指南
- Nutch分布式检索配置
- 3.The Hadoop Distributed File System
- [转载]如何成为一名黑客
- 4.Hadoop I/O
- 解决“You have new mail in /var/spool/mail/root”