本文转帖自: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="1.0.0.0"
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

这里我再多解释一下,最后加上的那一行,“1”代表资源ID,必须是“1”。“24”代表资源类型,我想我们对RT_ACCELERATOR、RT_BITMAP、RT_MENU、RT_STRING等资源都非常熟悉,而“24”实际上是RT_MANIFEST。最后面引号中的东西我就不再�嗦了。
好了,编译后的这个.exe文件拿到哪都可以,都是XP风格的界面,不用再依赖.manifest文件了。哦,当然了,必须在XP或2003系统下才可以。

vc6.0程序界面实现XP风格方法相关推荐

  1. (转)VC6.0同时打开两个工程方法

    Win7系统:在Win7操作系统下,如果是以Administrator登陆,则VC6.0打开工程文件的时候,不能同时打开多个工程文件,后打开的工程会将前一个工程close掉,这样,VC6.0只能出现一 ...

  2. vc6.0程序运行报错误码为0xc0000005的错误。

    问题: vc6.0程序运行报错误码为0xc0000005的错误. 原因: 自己的代码有问题,导致访问了非法地址,出现该问题.

  3. VC程序中Windows XP风格程序界面的实现

    文章原创,转载请注明出处 默认情况下用MVC++98创建的MFC应用程序的界面使用5.82版本的ComCtrl32.dll中控件,使得其风格为Windows 2000系统的风格, 看上去绘制得比较粗糙 ...

  4. ★ .net应用程序如何表现XP风格?

    使用Aosu易博通,一分钱不花,实现网文自动摘抄, 博客写作方便又快捷,和您现在看到的一样 !自主嵌入Google广告,还能赚取美金! 现在就下载 src="http://aosustudi ...

  5. win7变成xp风格了怎么改回_win7桌面怎么改成xp风格?win7桌面改成xp风格方法

    随着 win7系统 不断发展和稳定,许多用户都从 xp系统 升级到win7系统,可是一些用户反馈说win7功能虽然多,但是界面不习惯,很多设置都不知道如何操作,和xp界面有很大不同.有什么办法可以让w ...

  6. VC6.0同时打开两个工程方法

    vc能否同时打开两个工程或点击第二项目时,不会关闭掉已经打开的项目,怎样让它而另起一个IDE 答:1).XP系统:是这样,控制面板---文件夹选项----文件类型----找到DSW---高级---- ...

  7. 小波变换c语言程序包,小波变换VC6.0程序实现

    摘要:随着小波研究的深入,小波变换的应用范围越来越广泛,但是一般的研究.工作中只是使用Matlab的小波工具包来编程.该文使用VC++6.0设计实现基于小波变换的数字图像处理软件模块,编写具体实现程序 ...

  8. 使用flash美化vc6.0的界面

    每次使用vc的时候都觉得vc的界面不好看,虽然vc也可做出好看的界面但那太耗费时间了,但结合flash后界面设计将变得简单,下面是我做的一个实例过程和结果. 首先先建立一个基于对话框的程序起名为&qu ...

  9. c语言错误lnk2001,vc6.0 LNK2001错误原因及改正方法

    学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误, 而一般说来发生连接错误时,编译都已通过.产生连接错误的原因非常多,尤其LNK2001错 ...

最新文章

  1. 牛客网 短最优升级路径 【Dijkstra算法】+【路径记录】
  2. java 防并发_并发:如何防止两个不同类中的两个方法同时运行?
  3. Frog Jumps CodeForces - 1324C(二分)
  4. javafx 和swing_集成JavaFX和Swing(修订版)
  5. 关于sprintf和snprintf的比较
  6. VS2017社区版30天到期无法使用的激活方法
  7. 多个线程访问统一对象的不同方法_分析| 你未必真的了解线程安全,别骗自己,来看下怎么实现线程安全...
  8. TensorFlow深度自动编码器入门实践
  9. 记录一次安恒信息面试过程
  10. 简述osi参考模型各层主要功能_OSI参考模型各层主要功能
  11. 先导课程 单片机_单片机技术(北京航空航天大学)-壹课堂 - 公开课 | 精品课程 | 教学视频...
  12. ArrayList(1.8)
  13. C++查找一个目录下所有特定扩展名的文件
  14. 25则“验尸报告”— 创业失败者启示录(下)
  15. 计算机基础知识复习(一)
  16. LaTeX 中常用的导数符号命令
  17. boost电路公式详解
  18. 北大软微计算机动画,【新增】2019年北京大学软微学院【电影方向】考研653、905参考书真...
  19. 【HTTP图片服务器】【项目记录2】:安装、配置MySQL环境
  20. 非线性规划(二): Matlab 求解约束极值问题

热门文章

  1. HTTP状态码 - 维基百科,自由的百科全书
  2. 基于JAVA星星电影购票网站计算机毕业设计源码+系统+数据库+lw文档+部署
  3. 获取有道词典在线翻译结果 及 Windows下配置运行ASP
  4. NIST发布四种抗量子密码算法
  5. 圣诞树 圣诞树 圣诞树_圣诞网页设计资源
  6. IIC、SPI和UART区别
  7. 3d打印驱动开启uart有什么用TMC2208如何在Ramps1.4开启uart
  8. 阿里“无影” | 未来每个人在云上都会有自己的主机
  9. Nico的刷题日记(二)
  10. 2020牛客寒假算法基础集训营1-nico和niconiconi