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

SWT源码分析(5)

2012-12-19 
SWT源码分析(五)先看程序:?从前面文章我们已经知道,在执行final Shell shell new Shell(display)这行代

SWT源码分析(五)

先看程序:

?

从前面文章我们已经知道,在执行final Shell shell = new Shell(display);这行代码时,会调用Control类中的

createWidget()方法:

?

可见,调用Display.windowProc(int,int,int,int)之前调用的是OS.createWindowEx,这也说明了windowProc

是一个回调函数。windowProc的关键代码是这些:

?

?

比如Text:

?

int /*long*/ windowProc (int /*long*/ hwnd, int msg, int /*long*/ wParam, int /*long*/ lParam) {LRESULT result = null;switch (msg) {case OS.WM_ACTIVATE:result = WM_ACTIVATE (wParam, lParam); break;case OS.WM_CAPTURECHANGED:result = WM_CAPTURECHANGED (wParam, lParam); break;case OS.WM_CHANGEUISTATE:result = WM_CHANGEUISTATE (wParam, lParam); break;case OS.WM_CHAR:result = WM_CHAR (wParam, lParam); break;......case OS.WM_LBUTTONDBLCLK:result = WM_LBUTTONDBLCLK (wParam, lParam); break;case OS.WM_LBUTTONDOWN:result = WM_LBUTTONDOWN (wParam, lParam); break;......case OS.WM_SYSKEYUP:result = WM_SYSKEYUP (wParam, lParam); break;case OS.WM_TIMER:result = WM_TIMER (wParam, lParam); break;......case OS.WM_XBUTTONUP:result = WM_XBUTTONUP (wParam, lParam); break;}if (result != null) return result.value;return callWindowProc (hwnd, msg, wParam, lParam);}

?我们又看到类似Windows C程序中的swtich-case语句了。根据不同的消息,会调用不同的方法处理。至于处理消息的过程,下篇文章中讲。

?

未完待续。

热点排行