- 浏览: 32464 次
- 性别:
最新评论
-
xiaguangme:
写的不错,赞一个
SWT源码分析 (一)
文章列表
通过前面这些文章,对SWT程序执行的流程作了一些解释。
分析SWT的源码,实际上并不困难,只要了解了windows 程序执行的基本步骤。前面对程序的分析,可以分为2部分,一是寻找RegisterClass,CreateWindowEx这些windows api,寻找窗口创 ...
第一篇文章中,有一个问题我没有解释,在Display中的runDeferedEvents方法中:
boolean runDeferredEvents () {
boolean run = false;
/*
* Run deferred events. This code is always
* called in the Display's thread so it must
* be re-enterant but need not be synchronize ...
先看程序:
package com.edgar;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
class TestMultButton {
public static void main(String[] args) {
Display display = new Displa ...
接上文。
同理,shell.setSize(200, 100);方法最后调用的是OS.SetWindowPos函数设置窗口的位置:
窗口现在创建完了,还要显示和更新,现在进入shell.open()方法:
public void open () {
checkWidget ();
STARTUPINFO lpStartUpInfo = Display.lpStartupInfo;
if (lpStartUpInfo == null || (lpStartUpInfo.dwFlags & OS.STARTF_USESHOWWINDOW) == 0) ...
一个基本的Windows C程序:
#include <windows.h>
#include <stdio.h>
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
int WINAPI Win ...
继续上次的。
上次程序中的部分代码:
Text hello = new Text(shell, SWT.MULTI);
hello.addMouseListener(new MouseListener() {
@Override
public void mouseUp(MouseEvent e) {
// TODO Auto-generated method stub
MessageBox box = new MessageBox(shell);
box.setMessage("内容");
...
阅读本文需要知道搭建swt的开发环境,对SWT有基本的了解,最好对Windows api也有所了解,还要稍微了解一下JNI。
HelloSWT是一个基本的SWT程序,当点击输入框的时候,会弹出一个MessageBox。
import org.eclipse.swt.SWT;
import org ...