快速业务通道

使用Eclipse RCP进行桌面程序开发(四):在Windows中使用Active X控件 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

使用Eclipse RCP进行桌面程序开发(四):在Windows中使用Active X控件

时间:2011-04-13 海边沫沫

看完这篇文章,可以开发如下的界面:

没有嵌入Active X控件的视图:

使用Eclipse RCP进行桌面程序开发(四):在Windows中使用Active X控件 - 编程入门网

嵌入浏览器控件,并显示www.blogjava.net的主页:

使用Eclipse RCP进行桌面程序开发(四):在Windows中使用Active X控件 - 编程入门网

在Windows系统下,OLE和Active X控件是两个非常吸引人的技术,它们的基础都是COM。 OLE的体验,就是平时我们可以把Excel表格嵌入Word文档,或者把PDF嵌入浏览器显示一样, 而Active X控件更是无处不在,做VB开发和网页开发的人都应该很熟悉。使用Windows系统中 丰富的Active X控件资源,我们可以实现功能非常强大的程序。

使用Eclipse RCP进行桌面程序开发(四):在Windows中使用Active X控件(2)

时间:2011-04-13 海边沫沫

在Windows平台下,SWT图形工具包提供了对OLE的支持,Active X控件和OLE文档都可以被 很方便地嵌入SWT窗口部件或者JFace部件,在这里,我只讨论将Active X控件插入视图。

在一个视图中包含一个Active X控件需要两个对象的支持,即一个OleFrame和一个 OleClientSite对象。如果需要创建一个OLE应用,需要先后创建他们。创建OleFrame对象比 较简单,OleFrame类定义在org.eclipse.swt.ole.win32中,创建OleFrame对象只需要简单的 new就可以,如下:

OleFrame frame = new OleFrame(parent, SWT.NONE);

在这个构造函数中,第一个参数指的是该OleFrame的母窗口部件,即Active X控件将要被 嵌入的窗口部件。

在OleFrame的基础上就可以创建OleClientSite对象,创建该对象需要知道控件的 programID,这个ID的信息存放在windows的注册表中。在我们这篇文章的例子中,我们使用 的是一个浏览器控件,那么我们怎么知道浏览器控件的ProgID呢?我使用的是Visual Studio 2003自带的OleView工具,如下图:

使用Eclipse RCP进行桌面程序开发(四):在Windows中使用Active X控件 - 编程入门网

使用Eclipse RCP进行桌面程序开发(四):在Windows中使用Active X控件 - 编程入门网

使用Eclipse RCP进行桌面程序开发(四):在Windows中使用Active X控件(3)

时间:2011-04-13 海边沫沫

可以看到,Navigate方法的id为0x00000068,转化为十进制就是104,而它需要的 参数第一个是一个字符串,其它的都是可选的,因此,我们可以这样调用它的方法:

可以看到,Microsoft Web 浏览器的ProgID为Shell.Explorer.2,我们可以这样创建 OleClientSite对象:

1OleClientSite client = new OleClientSite (frame,SWT.NONE,"Shell.Explorer.2");

创建对象后,还需要激活,才能 够在RCP程序中对这些OLE对象进行操作。如下:

client.doVerb (OLE.OLEIVERB_SHOW);

然后,我们需要操作这个Active X控件,调用它的方法,或者 设置它的属性。比如在此例中,我们需要调用浏览器控件的navigate方法,以便我们的浏览 器控件显示www.blogjava.net的主页。对Active X控件的操作通过OleAutomation对象来实现 ,创建OleAutomation对象的方法如下:

OleAutomation automation = new OleAutomation(client);再通过automation.invoke()来调用Active X控件的方法,其中 invoke方法有几种重载形式,有只带一个int参数的,也有带int和Variant[]两个参数的,其 中的int参数表示要调用的Active X控件的方法的ID,Variant[]参数就是要传递给Active X 控件的方法的参数。

这里我们要说一说Variant类,这个类提供了多个构造函数,可 以方便的将int,float,long,double,string等等基本数据类型封装为Variant,比如我们要传 递给浏览器控件的navigate方法的地址参数:

Variant url = new Variant("http://www.blogjava.net");

那么我们怎么才能得到Active X控件的方法的ID,还有它需要哪些参数呢?还是要借助前 面提到的OleView.exe工具,如下图:

Variant url = new Variant("http://www.blogjava.net/"); automation.invoke(104, new Varia

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号