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-28 10:58
为什么 dwt 不直接提供 lib 包下载呢.还要下载源码编译.我不会弄啊.
hqs7636 2008-5-28 20:31
利用Poseidon编译新版的DWT(Base on SWT3.3.2)