关于让自己的程序界面实现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文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentityname="XP style manifest"processorArchitecture="x86"version="1.0.0.0"type="win32"/>
<dependency><dependentAssembly><assemblyIdentitytype="win32"name="Microsoft.Windows.Common-Controls"version="6.0.0.0"processorArchitecture="x86"publicKeyToken="6595b64144ccf1df"language="*"/></dependentAssembly>
</dependency>
</assembly>

大家也看到了,这其实是一个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系统下才可以。

效果不错吧?!   :)

源代码下载:http://csdngoodname008.51.net/XPStyleVC.zip

*-------------------------------------------*

*  转载请通知作者并注明出处,CSDN欢迎您!   *

*  作者:卢培培(goodname008)              *

*  邮箱:goodname008@163.com                *

*  专栏:http://blog.csdn.net/goodname008   *

*-------------------------------------------*

VC无负担实现XP风格界面相关推荐

  1. [转]VC无负担实现XP风格界面

    VC无负担实现XP风格界面 有件事情必须说一下,按照上面的方法,test.exe必须先调用InitCommonControls函数(已经废除,不建议使用)或者InitCommonControlsEx函 ...

  2. VC无负担实现XP风格界面(转)

     VC无负担实现XP风格界面 <script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None' ...

  3. VC无负担实现XP风格界面 [转]

    关于让自己的程序界面实现XP风格这个问题,在网上的讨论很多,大多数的作法都是写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成t ...

  4. VC6无负担实现XP风格界面

    VC6无负担实现XP风格界面 关于让自己的程序界面实现XP风格这个问题,在网上的讨论很多,大多数的作法都是写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe,就将这个 ...

  5. vc中实现xp风格界面

    关于让自己的程序界面实现XP风格这个问题,在网上的讨论很多,大多数的作法都是写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成t ...

  6. VC6风格转XP风格界面的两种方法

    方法1 无负担的manifest文件 关于让自己的程序界面实现XP风格这个问题,在网上的讨论很多,大多数的作法都是写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe, ...

  7. 使用manifest实现XP风格界面

    第一种方法:是写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成test.exe.manifest,并将其和test.exe放在 ...

  8. 如何使得WIN7下用VS2010做出的MFC程序具有XP风格(摆脱传统界面的效果)

    VS2010建一个MFC的工程后,运行生成的对话框还有按钮之类的资源控件的风格是XP以前的传统的界面风格,效果不太令人满意.                 比较上面的图片,可以明显看到它们的不同.要 ...

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

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

最新文章

  1. Matlab-运算符
  2. ssh长时间不操作便断开_不懂Excel文件恢复方法?只要跟着这样操作,便可以光速恢复文件...
  3. spring cloud nacos_SpringCloud Alibaba系列之Nacos配置中心玩法
  4. Linux MYSQL 数据库
  5. Java System类console()方法及示例
  6. System V IPC之信号灯
  7. AES算法重点详解和实现
  8. php阿拉伯语字符串,按字母顺序命名阿拉伯语名称Mysql和php
  9. 解决win2008下IIS7的HTTP500错误
  10. ORA-02030: can only select from fixed tables/views
  11. 来到深圳奋斗的这些年(不断更新!)
  12. A very hard mathematic problem(二分)
  13. HC05蓝牙点亮LED
  14. 计算机课ppt插入图片,PPT中图片的巧妙切换 -电脑资料
  15. SQL Server 索引优化——重复索引(部分重复)
  16. 有符号数和无符号数在计算机中怎么区分?
  17. java主程序怎样调用子程序_主程序调用子程序使用( )指令。
  18. 如何撰写PRD(一)
  19. TFmini__Plus的I²C接口电脑单机测试参考方案
  20. 铷标准的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. 彻底搭建云笔记(附插件)
  2. java中文转换工具类
  3. 用HTML+CSS编写课程表及个人简历表
  4. 路由器经常断网,网络不稳定怎么办, 教你如何让旧路由器也能运转飞起
  5. 百度研究院发布2022科技趋势预测,涵盖三大层面、十大领域
  6. JavaScript 制作百度输入预测功能
  7. Apache Curator实战
  8. CRT8.5.4.zip包
  9. 程序化广告(3):交易模式
  10. FreeEIM - 沟通最简单