样子就像微软VS2005中创建的对话框和按钮设计时那样,可运行后却还是那最原始的那个样子因为不能截图,所以我找了个例子,大家看一下
http://vipchina.ys168.com 上传区文件夹中下载,其实就是超级兔子中的内存整理程序不知道这种样式是在VS2005中什么地方设置下就可以,还是要采用第三方的界面,希望手中有这种样子或其他漂亮界面的朋友能发我一份。 如果觉得分不够,我再开贴给分
程序基本完成了,可界面太难看了 还请大家帮忙 先谢了~E-MAIL: [email protected]
Q:17993437
http://vipchina.ys168.com 上传区文件夹中下载,其实就是超级兔子中的内存整理程序不知道这种样式是在VS2005中什么地方设置下就可以,还是要采用第三方的界面,希望手中有这种样子或其他漂亮界面的朋友能发我一份。 如果觉得分不够,我再开贴给分
程序基本完成了,可界面太难看了 还请大家帮忙 先谢了~E-MAIL: [email protected]
Q:17993437
解决方案 »
- 如何获得网卡是否自动获得DNS地址?
- VC++2010 DB Grid无法绑定数据源
- MFC 对话框程序接受用户在任务栏点击???
- CPropertySheet中的窗口资源切换问题
- 使用Socket自定义通讯协议的烦恼
- 如何实现两个进程之间实现同步???????????急急急
- RichEdit中有两个超级链接,可是它们文字一样,我在单击响应事件里要把它们分开,做不同的事,怎么办呢?
- 问ADO中GetState为什么返回总是0
- 送消息调用映射函数的问题,很简单
- 已经得到一个窗口的hwnd,如何知道是哪个类的窗口?
- win2000和win98下FAT16文件系统有什么区别?
- VC简单问题~~~~急!!在线等答案!!!
【简 介】
关于让自己的程序界面实现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文件: version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Windows.GDI"
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系统下才可以。 PS:
没必要这样
大家在RES目录下会看到 你的文件名.manifest文件的
直接拷贝到Exe目录下,改名 你的文件名.exe.manifest就可以了
支持XP/2003,所以我不知道在RC上更改编译后能不能在9X下运行
9X系统的测试一下
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Windows.GDI"
type="win32"
/>
在此说明应用程序 type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
放到XPStyle.manifest 中,又把这个文件分别放以了DEBUG目录,工程目录,RES目录2,在.rc文中最后加入了 1 24 "XPStyle.manifest" 这行3,编译,没问题 可窗口风格没有变
是我做的步骤有问题,怎么不行?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Winweb.<Executable Name>"
type="win32"
/>
<description>My App</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
将上面第五行中的<Executable Name>替换成你的运用程序名即可。 或者参考文章:
http://www.yesky.com/312/1762812.shtml