关键字: 界面 SKIN 作者:董含君
界面是拼出来的.
你看到的最终界面实际上就是一个PictureBox(或者类似的设备),VC的朋友都理解,我们看到的全部的界面实际上都是"画"在窗体上的,只不过微软已经为我们做好了一切的重画工作罢了.如果自己像这么作,就要重复这部分劳动,不要觉得复杂,因为这是必然的.等你习惯了就行了(不难,就是耗时间)
方法1:配置文件配置的SKIN
所谓的脚本(不是脚本,应当说是配置信息)
比如 conf.ini
描述的就是 XX 按键的按下去位图文件是 xx1.bmp 松开的时候是xx2.bmp 悬浮的时候是 xx3.bmp 平时 是 xx0.bmp
然后描述 按钮XX的位置
10,10,200,100
举例
'conf.ini
[main]
bmpdir=bmp '指定位图文件目录
wavdir=wav '指定wav文件目录
[butXX] '按钮XX相关
top=10
left=10
height=100
width=200
Style0=xx0.bmp
Style1=xx1.bmp
Style2=xx2.bmp
Style3=xx3.bmp
tooltip=按钮XX的浮动提示
wav=ding.wav
[but2]
.....
[but3...]
配置完成之后,应用程序再读取这个ini 就可以了
假设你读取的函数是LoadINI(段名称,键名称) 返回 类型为字符串
Dim SkinBMPDir as string
dim SkinWAVDir as string
sub form_load()
loadskin "./skin/default/conf.ini"
end sub
sub loadSkin( conffile as string)
SkinBMPDir =loadini("main","bmpdir")
skinWavDir =loadini("main","wavdir")
imgButXX.top=cint(loadini("butxx","top")) '''(定义位置)
imgButXX.left=cint(loadini("butxx","left"))
...
imgButXX.image=loadpicture(skinbmpdir+loadini("butxx","Style0")) ''读取图片
...
end sub
实际上SKIN就是这样,或者差不多,就是一个数据配置文件
2 脚本配置
所谓的脚本就麻烦了,需要有脚本引擎解释.比如游戏界面里的那些操作界面,都是脚本实现的,怎么??你不相信!!!只不过一般你用不到这么复杂就是了
假设你的程序像OFFICE一样支持VBA,那么你的脚本应该是这样的
conf.cfg
'假设你的程序对每个按钮都有定义,比如classButXX类的对象ObjButXX
objButXX.top=...
ObjButXX.Style0=loadpicture("...
'中间对界面的配置由脚本来完成...
请参考叶凡达人的文章
VBScript脚本运用(脚本程序与宿主程序的交互) http://blog.csdn.net/yefanqiu/archive/2004/10/15/137928.aspx
VBScript脚本运用 http://www.bjjr.com.cn/YeFan/SourceCode/YFVBScript.rar
3 PlugIn技术
最后就是插件技术了
就是动态加载DLL
记得怎么用API么, declare function xxxx lib .....
VC有个LoadLibrary(忘了,也好想是delphi 我搞混了,VC Delphi反正两个都有)
VB没有,只能用WinAPI来动态加载dll
然后再dll提供同一的接口函数,比如confSkin()
主程序开始的时候,根据配置,动态加载 某个dll,然后配置工作交给dll的confSkin()完成
插件技术也是如此,比如不顾定的计算方法(例如WinAmp的屏幕动画),固定去调用某个dll的固定函数就可以了.
随着技术的进步,XML的大量引用,函数可以不顾定,dll也可以不顾定.
Flash也可以做界面...
HTML做界面的也越来越多了...
微软最新的例子演示了怎样用D3D来使用组件...
唉,老了,跟不上时代了