D语言中国主页  D语言编辑器SciTE4D   DWin库 D语言官方网站
D语言编译器1.x最新版 OpenSource   Tango   webnews  Wiki

查看完整版本: D语言界面库DWT入门

yidabu 2008-5-5 17:15

D语言界面库DWT入门

D语言界面库DWT入门

[b]一 JAVA 界面库SWT和D语言界面库DWT[/b]

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的手工转换,主页是 [url]http://www.dsource.org/projects/dwt[/url] , 是 D语言 目前最主要的界面库, 也是 D语言中国 [url]http://www.d-programming-language-china.org/[/url] 推荐使用的 D语言GUI 库。



[b]二 下载 D语言界面库DWT[/b]

首先,一定要用版本控制工具来下载DWT的最新版本,而不是用其他集成打包的,以方便随时升级到最新版dwt。

DWT使用的版本控制工具是mercurial, 在Windows下可以用可视化工具 TortoiseHg, 到下面地址下载: [url]http://tortoisehg.sourceforge.net/[/url]

进入 ...\dmd\src\ 目录, 点右键,选择 "tortoiseHg", "Clone a Repository",
[quote]Source Path: [url]http://hg.dsource.org/projects/dwt-win[/url]
Destination Path: ...\dmd\src\dwt-win\[/quote]

然后点击 "Clone", 要注意,Destination Path要换成你的实际路径。

在更新时,进入 ...\dmd\src\dwt-win\ 目录,点击右键,选择 "tortoiseHg", "Synchronize...", 再点"Pull".
完了,再点击右键选择 "tortoiseHg", "Checkout Revision".

同样原理,
同步 [url]http://hg.dsource.org/projects/dwt-addons[/url] 到 ...\dmd\src\dwt-addons\,
同步 [url]http://hg.dsource.org/projects/dwt-samples[/url] 到 ...\dmd\src\dwt-samples\


[b]三  下载 D编程语言导入库[/b]

下载地址:
[url]http://www.dsource.org/projects/dwt/wiki/ImportLibraries[/url]

DWT目前基于Tango, 推荐把导入库解压到tango\lib目录, 或者如果你有DWin [url]http://dwin.d-programming-language-china.org/[/url] , DWin\lib 已经包含了所有最新的Windows导入库。



[b]四  配置dmd\bin\sc.ini[/b]

为方便编译基于 DWT的程序,应该把 dwt库路径加入到 dmd编译配置文件 sc.ini, 类似下面:
[quote]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
[/quote]
上面是 D语言中文社区 [url]http://www.d-programming-language-china.org/[/url] 所用的编译配置,如果你的路径不同,应该照实际进行修改。



[b]五  用 D语言编辑器SciTE4D 编译 D语言界面库 DWT[/b]

在这之前,你要下载并安装好DMD, Tango, dsss, SciTE4D
关于DMD, Tango, DSSS的下载,安装和设置,D语言论坛 [url]http://bbs.d-programming-language-china.org/[/url] 都有相关教程。 SciTE4D的安装和设置请参考: [url]http://scite4d.d-programming-language-china.org/[/url]

1 修改 ...\dmd\src\dwt-win\dsss.conf
改成下面这样:
[quote][dwt]
type=library
target=dwt
buildflags=-O -inline -release[/quote]

2 用 D语言编辑器SciTE4D 编译 D语言GUI库 DWT

用 D语言编辑器SciTE4d 打开dwt里任意源文件,比如打开 ...\dmd\src\dwt-win\dwt\DWT.d, 按Ctrl+F7进行编译。

编译好后,把dwt.lib复制到相应目录,比如tango\lib下。


[b]六 运行第一个DWT程序[/b]

用 D语言编辑器SciTE4d 新建文档,保存为 D:\test\test.d, 把下面代码复制进去:[code]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;
}[/code]再新建D:\test\build.bat,内容只有一行:
[quote]dmd test.d -L/SUBSYSTEM:windows:5[/quote]

在SciTE4D里按Ctrl+F5直接运行代码。如果一切设置正确,上面代码可以成功运行。
20080505 首发 D语言论坛 [url]http://bbs.d-programming-language-china.org/[/url]

hqs7636 2008-5-6 01:13

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

sleets 2008-5-12 17:45

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

laobu 2008-5-23 13:49

嗯.也去弄一个来试试.

laobu 2008-5-28 10:58

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

hqs7636 2008-5-28 20:31

利用Poseidon编译新版的DWT(Base on SWT3.3.2)
页: [1]
查看完整版本: D语言界面库DWT入门