让 VB6 开发的程序拥有视觉样式( XP 风格),VC++6.0 同样适用

前端之家收集整理的这篇文章主要介绍了让 VB6 开发的程序拥有视觉样式( XP 风格),VC++6.0 同样适用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原文地址:http://hi.baidu.com/hammerc/item/ed1e32ec6090e3d0ea34c9ad

相信用 VB6 或 VC6 开发过程序的朋友都曾郁闷过吧,VB6 或 VC6 做的程序都没有视觉样式(XP风格),毕竟是 98 年的产品了!很老了。笔者也因此改用 VB2005,可以直接编写出拥有视觉样式(XP风格)的程序。但是 VB2005 编写的小程序占用近 10MB 的内存不说,还得事先安装 .NET Framework2.0 才能运行。当然最后把我逼疯的是它开发的程序第一次运行需要等上 5 秒多钟!最后笔者重操旧业,又用起了 VB6 和 VC6。


上图为 VB6 开发的一个程序。纵观整个程序,也只有 text 和 list 两个控件里的滚动条启用了视觉样式(XP风格)。

通过最近在网上搜索的资料和自己的摸索,笔者总结了三个方法让 VB6 或 VC6 开发的程序拥有视觉样式( XP 风格):

方法一:使用 Manifest 文件

在你的程序所在目录下新建一个文本文件,打开后写入下列代码

<?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="vbAccelerator.XPStylesTester.XPStylesTester"
type="win32"
/>
<description>VB code converter.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

保存后将文本文件名改为 程序名加上.exe.Manifest 。比如上图的程序名为 工程1.exe ,就将文本文件名改为 工程1.exe.Manifest 。接下来运行程序看看。哈哈,成功了!


缺点,文件分离且要改名,麻烦。而且相信大家也发现了(只是 VB6 开发的程序会出现这个问题),一些控件在Frame控件内显示会发生错误解决方法是在Frame控件内拖入一个PictureBox控件,并将显示风格BorderStyle设置为0-None。而且CommandButton、CheckBox、OptionButton控件将不会显示自定义颜色。还有Common Controls 5.0控件可以使用XP样式,Common Controls 6.0控件不行。

方法二:将信息嵌入程序的资源文件中。

这是最搞笑也是最麻烦的做法而且只适用于 VB6,所以我没做过,就把别人的方法直接写下来了哈。

在第一个加载的窗体中声明和引用下面这个API过程。

Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
Private Sub Form_Initialize()
InitCommonControls
End Sub

这样就可以调用XP风格了。打开资源文件管理器,不过我还是建议你使用第三方的RES资源管理器。打开我们刚才的文件,将其资源ID号更改为24,将文件号更改为1,编译程序,完成!

方法三:使用eXeScope。

这是我无意间发现的,而且效果很好,即简单又能弥补方法一的缺点。这种方法要用到eXeScope这个软件,可以去网上下载,这儿我提供一个下载地址:www.duote.com/soft/3533.html。安装好eXeScope后,打开eXeScope,选择文件->打开,打开你的程序。这儿先做好你的程序的备份哦。打开后,再选择编辑->XP样式,在对话框中确定。退出eXeScope。

运行程序看看,不用我多说了吧,呵呵。

猜你在找的VB相关文章