WEB开发网
开发学院软件开发Java 集成 Windows 本地应用到 Eclipse RCP 程序中 阅读

集成 Windows 本地应用到 Eclipse RCP 程序中

 2009-12-18 00:00:00 来源:WEB开发网   
核心提示: 窗口的创建:当我们 SWT 窗口创建时,我们需要将本地应用程序窗口创建出来窗口的销毁:当我们 SWT 窗口销毁时,集成 Windows 本地应用到 Eclipse RCP 程序中(9),我们也要将本地应用程序窗口销毁,焦点控制:当我们的 SWT 窗口获取到焦点时,我们创建本地应用窗口可能需要花较

窗口的创建:当我们 SWT 窗口创建时,我们需要将本地应用程序窗口创建出来

窗口的销毁:当我们 SWT 窗口销毁时,我们也要将本地应用程序窗口销毁。

焦点控制:当我们的 SWT 窗口获取到焦点时,我们要将焦点设置到本地应用程序窗口中。

窗口大小的变化:当我们的 SWT 窗口的位置或大小发生变化时,我们要通知本地应用程序窗口改变它的位置或大小。

首先我们来看窗口的创建和销毁。我们需要监听 SWT 窗口的 Paint 事件和 Dispose 事件,在响应 Paint 事件中创建本地应用程序窗口,在响应 Dispose 事件中关闭本地应用程序窗口。需要注意的是,我们创建本地应用窗口可能需要花较长的时间,为了避免阻塞 UI 线程,我们将其放在一个线程中执行。如下面的清单所示:

public class NativeControl extends Canvas{ 
 private int childWnd = 0; 
 private String startCommand = null; 
 private String wndClassName = null; 
 
 private boolean isCreatingNative = false; 
 
 public NativeControl(Composite parent, int style) { 
 super(parent, style); 
 this.addPaintListener(new PaintListener(){ 
 
  public void paintControl(PaintEvent arg0) { 
 this.addPaintListener(new PaintListener(){ 
 
  public void paintControl(PaintEvent arg0) { 
  if(childWnd==0 && !isCreatingNative){ 
   isCreatingNative = true; 
   Thread thread = new Thread(){ 
   public void run(){ 
   childWnd = ReparentUtil.startAndReparent( 
  NativeControl.this.handle,startCommand,wndClassName); 
    
   } 
   }; 
   thread.start(); 
  } 
  } 
 }); 
  } 
 }); 
 this.addDisposeListener(new DisposeListener(){ 
 
  public void widgetDisposed(DisposeEvent arg0) { 
  if(childWnd!=0){ 
   OS.SendMessage(childWnd, OS.WM_CLOSE, 0, 0); 
  } 
  } 
  
 }); 

上一页  4 5 6 7 8 9 10  下一页

Tags:集成 Windows 本地

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接