几行代码,轻松让你的界面与众不同(for vb)

前段时间公司部分以前用vb做的部分软件要进行美化,由于代码量比较多,直接修改源代码工作量比较大,改起来恐怕会不断有新的问题出现,再加上老的软件已经运行很长时间了,比较稳定,该代码后的风险实在是太大了,于是决定用现成的换肤控件,经过对比发现有两款做的不错,其余的基本都是垃圾,问题百出。这两款就是skin++和appface,其中skin++要优于appface.而且appface有部分控件在我的软件里支持不好,所以就决定用skin++,在和对方谈价格的时候,对方的报价蛮吓人的,8000多元,奶奶的,抵我几个月的工资了,以前也研究过换肤技术,也算有一些了解,价格也不用定的这么高吧,坚决不买。还是自力更生决定自己写个换肤控件,而且功能也不比你差,:)

想法容易做起来难,在做的过程中遇到了许多困难,主要就是vb中的label,line控件没有句柄,无法修改起皮肤,这个问题整整折磨了我一个多月,不过还好最终还是靠自己的努力解决了这个问题,真是欣慰,最终作出来的效果自己感觉还不错,不用改现有的任何代码,只要添加几行代码,即可实现vb程序的完美换肤。

以下是换肤前后的效果:
(不能贴图片,5555,有需要的向我索取吧)
 

皮肤组成:
本皮肤包含4个文件,其中3个文件(vbskin.dll,skinres.dll,skinOcx.ocx)为皮肤相关文件,你需要要将这三个文件拷贝到你工程的文件夹里,还要有一个文件是vc支持库文件msvcrtd.dll,需要将其拷贝到系统目录里面(system32),否则你的皮肤不起作用。


下面将具体的使用方法说明如下:


然后按照如下步骤操作

1.首先要用regsvr32注册skinocx控件

2.在你的工程里引用此控件,打开vb菜单 Project/component,选择skinocx即可

3.新增一个公用模块,并将以下代码拷贝到模块里面

Public skin As New Skinner

Public Sub SetForms()

    Dim col As New Collection

    Dim i

    Dim frm As Form

    For Each frm In Forms

    col.Add frm

    Next

    skin.SetCollection col

End Sub

4. 在你的启动窗体的formload里添加如下代码

Dim strPath As String

strPath = App.Path + "/SkinRes.dll"

skin.BeginHook strPath

SetForms

5.要让你的所有窗体都换肤,只要生成一个新窗体(form_load)时执行一下SetForms过程即可,还有一个变通的方法就是在开始启动时先加在所有的窗体,然后将其visible属性置为false。注意要在调用setforms之前加载哦,否则无效

  

运行你的程序,看看出现了什么变化?是不是所有的控件都变掉了,

:)是不是很酷啊!!!

 
本皮肤支持几乎所有的vb标准控件,包括菜单,工具栏,状态栏等。

测试环境:vb6+win2000.

由于此处不能上传,所以将演示程序及控件放到了资源里面,大家到那边去下载吧,地址是     http://download.csdn.net/source/241446。


由于自己的艺术细胞比较缺乏,界面设计以及配色等都比较难看,请大家原谅,并多提宝贵意见,以便作者更好地改进,有兴趣的朋友可以与我交流交流,我的邮箱[email protected]

 

 

你可能感兴趣的:(vc,c++,学习之路)