发新话题
打印

D语言界面库DWT入门

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",
引用:
Source Path: http://hg.dsource.org/projects/dwt-win
Destination Path: ...\dmd\src\dwt-win\
然后点击 "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/

TOP

不错,谢谢,我一直以为swt只是swing的一个简化版,只适合做界面,原来eclipse是用它做出来的。
我前几天下载了一个set包,不知道行不行,4月26号更新的

TOP

这个现在的源代码版本是很有问题的。
现在编译出来的包N大,并且自己的例子也崩溃。

TOP

嗯.也去弄一个来试试.

TOP

为什么 dwt 不直接提供 lib 包下载呢.还要下载源码编译.我不会弄啊.

TOP

利用Poseidon编译新版的DWT(Base on SWT3.3.2)

TOP

发新话题