Board logo

标题: 将 ActiveX 控件集成到 SWT 应用程序(2) [打印本页]

作者: look_w    时间: 2018-5-7 16:48     标题: 将 ActiveX 控件集成到 SWT 应用程序(2)

选择 PDF 文档在用户可以查看 PDF 文档之前,用户需要从其工作站选择 PDF 文档。下面 中的代码说明了为最终用户打开一个文件对话框所必需的对象和方法。      
清单 2. OpenAction 类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
0   ...
1   public class PDFViewer extends ApplicationWindow
2   {
3      private OleControlSite site;
4      private OleAutomation auto;
5
6      public PDFViewer()
7      {
8         super(null);
9         this.addMenuBar();
10      }
11
12      protected Control createContents(Composite parent)
13      {
14         Shell shell = this.getShell();
15         shell.setText("PDF Viewer");
16         shell.setSize(500, 450);
17
18         OleFrame frame = new OleFrame(shell, SWT.NONE);
19
20         try
21         {
22            site = new OleControlSite(frame, SWT.NONE, "PDF.PdfCtrl.5");
23            auto = new OleAutomation(site);
24            
25   ...




让我们简要地研究这一代码片段:
图 2. Open File 对话框


列出 ActiveX 的命令在讨论如何在查看器应用程序中显示 PDF 文档之前,了解在 Adobe Acrobat Reader Active X(         PDF.PdfCtrl.5 )组件中实际上可以使用哪些命令是有用的。样本代码软件包包括了由 IBM 开发的类。该类列出了 ActiveX 控件所公开的所有公用命令。      
要枚举用于         PDF.PdfCtrl.5 控件的命令,请在 PDFViewer 目录中执行下面的命令:         ant activex 。      
如果您的环境配置正确,那么您应当会看到类似于下面这样的内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
...
     [java]Functions for PDF.PdfCtrl.5 :
        
     [java]METHOD (id = 2) :
     [java]     Signature   : boolean LoadFile([] String fileName)
     [java]     Description : null
     [java]     Help File   : null
        
     [java]METHOD (id = 3) :
     [java]     Signature   : void setShowToolbar([] boolean On)
     [java]     Description : null
     [java]     Help File   : null
        
     [java]METHOD (id = 4) :
     [java]     Signature   : void gotoFirstPage()
     [java]     Description : null
     [java]     Help File   : null
...




要查看用于任何其它 ActiveX 控件的命令,只要编辑包含在源代码中的         build.xml 文件,并用一些其它 ActiveX 的程序标识符替换该类的参数。下面的 Ant 目标说明了要插入控件的程序标识符的位置。      
清单 3. 编辑 build.xml 文件
1
2
3
4
5
6
7
8
9
10
11
12
13
...
      <target name="activex" depends="package-common">
            <java classname="Main" fork="true">
                     <jvmarg value="-Djava.library.path=${eclipse.dir}windows"/>
                      <classpath>
                        <pathelement location="${dist.dir}/pdfviewer.jar"/>
                              <fileset dir="${eclipse.dir}" includes="*.jar"/>
                              <fileset dir="${eclipse.dir}windows" includes="*.jar"/>
                      </classpath>
                      <arg value="<insert some program identifier>"/>
            </java>
      </target>
...




从该类输出的第一个命令是 LoadFile。让我们研究一下如何在 PDF 查看器应用程序中应用这个命令。
执行 ActiveX 命令一旦用户选择了一个 PDF 文档,         PDFViewer 类就需要执行 ActiveX 控件中所公开的命令。下面 中的代码说明了使 ActiveX 控件装入用户所选的 PDF 文档所需的对象和方法。      
清单 4. PDFViewer 类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
0   ...
1   public void showPdfControl()
2   {
3      site.doVerb(OLE.OLEIVERB_SHOW);
4   }
5
6   public void loadFile(String file)
7   {
8      showPdfControl();
9
10      int[] rgdispid = auto.getIDsOfNames(newString[]{"LoadFile"});
11      int dispIdMember = rgdispid[0];
12
13      Variant[] rgvarg = new Variant[1];
14      rgvarg[0] = new Variant(file);
15
16      Variant pVarResult =auto.invoke(dispIdMember,rgvarg);
17   }
18...




让我们研究这一代码片段:
运行 PDF 查看器应用程序要测试和运行 PDF 查看器应用程序,请完成下列步骤:
结束语SWT 库向 Java 开发人员提供一种功能强大的机制,使 Microsoft Windows ActiveX 控件集成到高度交互的客户机端应用程序。有了 SWT 对 ActiveX 控件和 OLE 文档的支持,研究如何创建外观极棒的且集成了本机窗口小部件和组件的应用程序是令人激动的。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0