首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

SWT源码分析 (7)

2012-10-24 
SWT源码分析 (七)通过前面这些文章,对SWT程序执行的流程作了一些解释。分析SWT的源码,实际上并不困难,只要

SWT源码分析 (七)

通过前面这些文章,对SWT程序执行的流程作了一些解释。

分析SWT的源码,实际上并不困难,只要了解了windows 程序执行的基本步骤。前面对程序的分析,可以分为2部分,一是寻找RegisterClass,CreateWindowEx这些windows api,寻找窗口创建的一系列流程,分析的是如何实现。

二是分析SWT对消息处理的封装,因为我们是在写Java程序,Java是OO的,我们不会再去写窗口过程函数了,分析的是“架构”,“模式”。

?

?

总结一下SWT程序的流程:

?

1.??Display display = new Display();

没有创建窗口,作了一些初始化、准备操作。一个程序往往只有一个Display对象,display对象持有很多程序其他对象的引用。

?

2. Shell shell = new Shell(display);

创建主窗口。

?

3. 类似Button b1 = new Button(shell,SWT.NONE);?Text ?text = new Text(shell,SWT.NONE);

创建控件,控件其实也是窗口。

?

4. 控件.addXXXListener();

监听控件的具体事件,实际上往控件上绑定了事件类型和监听器。

?

5.?shell.open();

显示窗口。

?

6.

?

?

?? ? ? ? ? ?while (!shell.isDisposed()) { // 如果主窗体没有关闭则一直循环

?? ? ? ? ? ? ? ? ? ? ? ?if (!display.readAndDispatch()) { // 如果display不忙

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?display.sleep(); // 休眠

?? ? ? ? ? ? ? ? ? ? ? ?}

?? ? ? ? ? ? ? ?}

?? ? ? ? ? ? ? ?display.dispose(); // 销毁display

?

进入消息循环,因为windows程序是“基于消息,事件驱动”的,所以程序时异步运行的,当发生了一个事件,

就会进入Display内部的窗口过程函数。Display中接收的是windows消息,将windows消息转换为SWT自己的事件,再交由具体的控件做处理。

就这样一直循环到程序退出。

?

?

至于SWT涉及到的一些模式。我如果我看出来,也会写出来,目前还没看出来什么。

热点排行