目前越来越多的客户端应用软件引入了脚本来对界面和逻辑做进一步的分离。Linux平台下mozilla平台的XUL结构,windows FX,都是这方面的应用。颇有界面编程XML化和脚本化的趋势。与XML描述相比,脚本更加灵活,有些弥补XML描述的不足,使得界面处理更加灵活。
当我们将GDI资源 字体,颜色,图片等用XML管理起来后,GDI元素的一致性得到有效的保证,在简单的替换XML后,我们的客户端就得以获取新的GDI资源来展现新的客户界面,即达到换肤的目的。目前这样子处理的客户端有开源项目shareaza,国内的QQlive客户端,千千静听等。
但是这样子就有一个问题,如果换肤后,我界面元素的位置需要调整怎么办,如果这个也在XML里描述,XML会变得难以描述和难以抽象,势必会与具体的界面逻辑关联。在这个时候,脚本的作用得以体现,可以考虑用脚本来做这部分工作,脚本可以控制界面控件及其他元素的相关特性,如大小,位置,windows text等。而程序中只需要处理逻辑,XML只需要处理GDI资源的描述和界面绘制的描述。当然这个只是脚本在客户端的一个小应用,事实上所有可变或者多变的逻辑都可以将其独立到脚本中来完成。国内采用XML加脚本方式来做的软件有QQ2007 QQMusic(XML+vbscript),八戒软件(XML+pascal script),QQ2009 QQ日历(XML +Lua),百度HI等,国外就更多了google桌面等。
1 通过Lua脚本调用MFC程序中相关函数 点击下载此文件
2 delphi pascal script demo 点击下载此文件