java调用Ocx控件相关知识

OLE和ActiveX控件的支持
OLE(Object Link Embeded)是指在程序之间链接和嵌入对象数据。通过OLE技术可以在一个应用程序中执行其他的应用程序。
而ActiveX控件是OLE的延伸,一般用于网络。
SWT中涉及OLE和ActiveX的类都在org.eclipse.swt.ole.win32包中,使用最常见的是OleFrame类、OleClientSite类和OleControlSite类。

  1. OLE控件的面板类(OleFrame)
    该类继承自Composite类,相当于一个放置OLE控件的面板。

该类的主要功能有以下几点:
◆ 对OLE控件进行布局的设置,相当于一个普通的面板类。
◆ 可以为控件添加菜单。
◇ 设置和获取文件菜单:setFileMenus(MenuItem[] fileMenus)和getFileMenus()。
◇ 设置和获取容器菜单:setContainerMenus(MenuItem[] containerMenus)和getContainerMenus()。
◇ 设置和获取窗口菜单:setWindowMenus(MenuItem[] windowMenus)和getWindowMenus()。
◆ 既然可以获取OLE控件的菜单,就可以对菜单项进行控制,例如设置可见和设置加速键等。
创建一个OleFrame对象的方法:
frame = new OleFrame(sShell, SWT.NONE);
// 为控件设置菜单项
frame.setFileMenus(fileItem);

  1. OLE控件类(OleClientSite和OleControlSite)
    OleClientSite对象和OleControlSite对象都是OLE控件,其中OleClientSite为OLE控件,OleControlSite为ActiveX控件,因为OleControlSite类继承自OleClientSite类。

若想创建OLE对象,有两种常用的构造方法:
◆ OleClientSite(Composite parent, int style, String progId):progId为标示应用系统的字符,例如,Word的progId为“Word.Document”,Excel的为“Excel.Sheet”,IE的为“Shell.Explorer”。若要查看其他应用程序的progId,可以查看系统注册表。
OleClientSite clientSite = new OleClientSite(frame, SWT.NONE, “Word.Document”);
◆ OleClientSite(Composite parent, int style, File file):file为保存的某一个文件。用这种方法创建的OLE控件,系统会根据文件自动查找对应打开的应用程序。
File file = new File(“F://Temp.doc”);
OleClientSite clientSite = new OleClientSite(frame, SWT.NONE, file);

创建了一个OLE控件,接下来需要打开控件,才可以显示控件。使用doVerb(int verb)方法。其中verb有以下可以选择的参数:
◇ OLE.OLEIVERB_PRIMARY:打开编辑状态的OLE控件。
◇ OLE.OLEIVERB_SHOW:显示OLE控件。
◇ OLE.OLEIVERB_OPEN:在另外一个窗口中打开OLE控件。
◇ OLE.OLEIVERB_HIDE:隐藏OLE控件。
◇ OLE.OLEIVERB_INPLACEACTIVATE:不带有工具栏和菜单栏的方式。
◇ OLE.OLEIVERB_UIACTIVATE:激活OLE的菜单栏和工具栏。
◇ OLE.OLEIVERB_DISCARDUNDOSTATE:关闭OLE控件。
例如,以下代码可以打开编辑状态的OLE控件:
clientSite.doVerb(OLE.OLEIVERB_PRIMARY);

当OLE对打开的文件修改后,通过isDirty()方法可以判断是否已经修改过。如果修改后,可以使用save(File file, boolean includeOleInfo)方法进行保存。例如:
if(clientSite.isDirty()) {
clientSite.save(file, true);
}

创建ActiveX控件对象要使用OleControlSite类,该类只有一个构造方法:
OleControlSite(Composite parent, int style, String progId):只能根据progId来创建。例如,创建一个Word的ActiveX控件对象的代码如下:
OleControlSite controlSite = new OleControlSite(frame, SWT.NONE, “Word.Document”);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值