D语言界面库DWT入门
一 JAVA 界面库SWT和D语言界面库DWT
SWT(Standard Widget Toolkit)是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的.
在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit). 虽然AWT框架也使用的是原生窗口部件(native widgets),但是它一直未能突破LCD问题。LCD问题导致了一些主要平台特征的遗失。
为解决这个问题,Sun又创建了一个新的框架。这个框架不再使用原生窗口部件,而是使用仿真窗口部件(emulated widgets)。这个方法虽然解决了LCD问题,并且提供了丰富的窗口部件集,但是它也带来了新的问题。例如,Swing应用程序的界面外观不再和原生应用程序的外观相似。虽然在JVM中这些Swing应用程序已经得到了最大程度的性能改善,但是它们还是存在着其原生对应物所不具有的性能问题。并且,Swing应用程序消耗太多的内存,这样Swing不适于一些小设备,如PDA和移动电话等。
IBM进行了尝试以彻底解决AWT和Swing框架带来的上述问题。最终,IBM创建了一个新的GUI库,这就是SWT。SWT框架通过JNI来访问原生窗口部件。如果在宿主(host)平台上无法找到一个窗口部件,SWT就会自动地模拟它。
为了方便开发SWT程序,在SWT基础上又创建了一个更易用、功能强大的图形包“JFace”。然而,JFace并不能完全覆盖SWT的所有功能,所以编程时SWT、JFace都会要用到,但是一般来说,能用JFace的组件就最好不要用SWT的。
D语言界面库DWT是 SWT的手工转换,主页是
http://www.dsource.org/projects/dwt , 是 D语言 目前最主要的界面库, 也是 D语言中国
http://www.d-programming-language-china.org/ 推荐使用的 D语言GUI 库。
二 下载 D语言界面库DWT
首先,一定要用版本控制工具来下载DWT的最新版本,而不是用其他集成打包的,以方便随时升级到最新版dwt。
DWT使用的版本控制工具是mercurial, 在Windows下可以用可视化工具 TortoiseHg, 到下面地址下载:
http://tortoisehg.sourceforge.net/
进入 ...\dmd\src\ 目录, 点右键,选择 "tortoiseHg", "Clone a Repository",
然后点击 "Clone", 要注意,Destination Path要换成你的实际路径。
在更新时,进入 ...\dmd\src\dwt-win\ 目录,点击右键,选择 "tortoiseHg", "Synchronize...", 再点"Pull".
完了,再点击右键选择 "tortoiseHg", "Checkout Revision".
同样原理,
同步
http://hg.dsource.org/projects/dwt-addons 到 ...\dmd\src\dwt-addons\,
同步
http://hg.dsource.org/projects/dwt-samples 到 ...\dmd\src\dwt-samples\
三 下载 D编程语言导入库
下载地址:
http://www.dsource.org/projects/dwt/wiki/ImportLibraries
DWT目前基于Tango, 推荐把导入库解压到tango\lib目录, 或者如果你有DWin
http://dwin.d-programming-language-china.org/ , DWin\lib 已经包含了所有最新的Windows导入库。
四 配置dmd\bin\sc.ini
为方便编译基于 DWT的程序,应该把 dwt库路径加入到 dmd编译配置文件 sc.ini, 类似下面:
引用:
LIB="%@P%\..\tango\lib;%@P%\..\src\other\dwin\lib;%@P%\..\..\dm\lib"
DFLAGS="-I%@P%\..\tango;%@P%\..\src\dwt-win;%@P%\..\src\dwt-addons;%@P%\..\src\other;%@P%\..\src\dwt-samples" -version=Tango -defaultlib=tango-base-dmd.lib -L+tango-user-dmd.lib+dwin.lib+pcre.lib+dwt.lib+advapi32.lib+comctl32.lib+comdlg32.lib+gdi32.lib+gdiplus.lib+glu32.lib+kernel32.lib+msimg32.lib+ole32.lib+oleacc.lib+oleaut32.lib+olepro32.lib+opengl32.lib+user32.lib+usp10.lib+uxtheme.lib+dwtx.lib
上面是 D语言中文社区
http://www.d-programming-language-china.org/ 所用的编译配置,如果你的路径不同,应该照实际进行修改。
五 用 D语言编辑器SciTE4D 编译 D语言界面库 DWT
在这之前,你要下载并安装好DMD, Tango, dsss, SciTE4D
关于DMD, Tango, DSSS的下载,安装和设置,D语言论坛
http://bbs.d-programming-language-china.org/ 都有相关教程。 SciTE4D的安装和设置请参考:
http://scite4d.d-programming-language-china.org/
1 修改 ...\dmd\src\dwt-win\dsss.conf
改成下面这样:
引用:
[dwt]
type=library
target=dwt
buildflags=-O -inline -release
2 用 D语言编辑器SciTE4D 编译 D语言GUI库 DWT
用 D语言编辑器SciTE4d 打开dwt里任意源文件,比如打开 ...\dmd\src\dwt-win\dwt\DWT.d, 按Ctrl+F7进行编译。
编译好后,把dwt.lib复制到相应目录,比如tango\lib下。
六 运行第一个DWT程序
用 D语言编辑器SciTE4d 新建文档,保存为 D:\test\test.d, 把下面代码复制进去:
复制内容到剪贴板
代码:
module test;
import dwt.widgets.Display;
import dwt.widgets.Shell;
void main ()
{
auto display = new Display;
auto shell = new Shell(display);
shell.setText = "Hello DWT World from http://bbs.d-programming-language-china.org/ ";
shell.open;
while (!shell.isDisposed)
if (!display.readAndDispatch)
display.sleep;
display.dispose;
}再新建D:\test\build.bat,内容只有一行:
引用:
dmd test.d -L/SUBSYSTEM:windows:5
在SciTE4D里按Ctrl+F5直接运行代码。如果一切设置正确,上面代码可以成功运行。
20080505 首发 D语言论坛
http://bbs.d-programming-language-china.org/
最新的dwt2的编译,请参考这篇文章(2009年3月24日补充):
http://www.d-programming-language-china.org/dwt2-xia-zai-bian-yi/