快速业务通道

集成Windows本地应用到Eclipse RCP程序中 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
omposite)(arg0.widget)).getClientArea()}   OS.SetWindowPos(childWnd, 0, rect.x, rect.y, rect.width, rect.height,   OS.SWP_NOZORDER| OS.SWP_NOACTIVATE | OS.SWP_ASYNCWINDOWPOS)}   }   }   });

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

时间:2011-02-15 IBM 梁骞 李辉

同样的我们利用 SWT 提供的函数来设置窗口的大小和位置,SetWindowPos 的参数分别是要设置的窗口句柄以及窗口位置大小。

最后我们需要添加一些方法,让用户可以设置启动应用程序的命令以及应用程序的窗口类型。

public void setStartParameters(String startCommand,String wndClassName){   this.startCommand = startCommand}   this.wndClassName = wndClassName}   }   public String getStartCommand() {   return startCommand}   }   public void setStartCommand(String startCommand) {   this.startCommand = startCommand}   }   public String getWndClassName() {   return wndClassName}   }   public void setWndClassName(String wndClassName) {   this.wndClassName = wndClassName}   }

这样我们就开发了一个 SWT 的控件,它可以将指定的 Windows 本地应用程序启动并将程序的窗口嵌入到控件中。对这个控件的使用和普通 SWT 的控件一样,唯一的区别就是要在窗口显示前调用 setStartParameters() 方法设置 Windows 本地应用程序的启动命令和窗口的类型。

下面是一个简单的例子,把 Windows Messager 嵌入到了我们的 SWT 的窗口中。

public class ReparentTest {   /**   * @param args   */   public static void main(String[] args) {   Display display = new Display()}   Shell shell = new Shell(display)}   shell.setText("Test dialog")}   GridLayout layout = new GridLayout()}   layout.numColumns = 1}   shell.setLayout(layout)}   Button button = new Button(shell,SWT.None)}   button.setLayoutData(new GridData())}   button.setText("Test")}   NativeControl control = new NativeControl(shell,SWT.NONE)}   GridData data = new GridData(GridData.FILL_BOTH)}   data.widthHint = 200}   data.heightHint = 200}   data.grabExcessHorizontalSpace = true}   data.grabExcessVerticalSpace = true}   control.setLayoutData(data)}   control.setStartParameters     ("C:\\Program Files\\Messenger\\Msmsgs.exe","MSBLClass")}   shell.open()}   while(!shell.isDisposed()){    if(!display.readAndDispatch()){    display.sleep()}    }   }   } }

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

时间:2011-02-15 IBM 梁骞 李辉

通过 setStartParameters() 方法来设置要启动的程序的路径以及该程序的窗口类型,在这里我们启动 MSN,对应的窗口类型是 MSBLClass:

control.setStartParameters("C:\\Program Files\\Messenger\\Msmsgs.exe","MSBLClass");

以下是代码显示的结果。我们可以拉伸改变窗口的大小,这时里面的 Messager 的窗口大小也会随之而变化。当焦点在 Test 按钮上时,按“Tab”键,焦点也会跳转到 Messager 的窗口上。

图 1. 图片示例

小结

本文介绍了将一个本地应用程序窗口集成到 Eclipse RCP 窗口中的相关技术。文中主要讨论的集成第三方的应用程序,由于我们不掌握第三方应用程序的代码,这种集成方式还是比较

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号