swt使用ole[转]

    在一个视图中包含一个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

 

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

 

    创建对象后,还需要激活,才能够在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.iteye.com");
   automation.invoke(104, new Variant[]{url}); 

 


代码示例:

OleFrame frame = new OleFrame(parent, SWT.NONE);  
OleClientSite client = new OleClientSite(((OleView)vw).frame,SWT.NONE,"Shell.Explorer");  
client.doVerb(OLE.OLEIVERB_SHOW);  
OleAutomation oa = new OleAutomation(client);  
Variant str = new Variant("http://www.iteye.com/");  
oa.invoke(104, new Variant[]{str});  
 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值