创建 ActiveX EXE 部件

部件以对象方式提供可重用代码。通过创建对象并调用其属性和方法来使用部件的代码的应用程序,被称作客户

相对于使用部件对象的客户端而言,部件可以运行于进程内或进程外。进程外部件或 ActiveX EXE,在自己的地址空间中运行。而客户通常是运行在其它进程中的应用程序。

图3.1   客户端和进程外部件

进程外部件运行在自己的进程中,这意味着客户端可以通知部件做某事,然后当部件工作时客户端可以继续它自己的工作。当这样的系统正确建立后,部件能在任务结束时使用异步通知来通知客户端,这在“建立代码部件”的“异步的回调与事件”中解释。

注意   “部件设计的一般原理”中的“进程内和进程外代码部件”讨论了进程内和进程外代码部件的区别。

本章将通过构造一个叫做 CoffeeWatch 的简单部件来逐步解释进程外部件的创建和使用。CoffeeWatch 演示了模式的和无模式对话框的行为,并演示了一种用事件来实现异步通知的方法。

通过在 Visual Basic 开发环境的两个不同的实例中运行部件和测试工程,会看到如何在进程外调试 ActiveX E XE。

创建 Coffee 部件的过程互相依赖。因此执行过程的顺序非常重要:

主题

vbconCreatingServer 创建 Coffee 工程

打开新的 ActiveX EXE 工程,设置必要的工程信息,并且添加演示模式和无模式窗体所需的模块。

vbconSettingUpNewOLEServerProject 显示 CoffeeMonitor 类的窗体

添加显式模式或无模式窗体的代码。

创建 CoffeeWatch 测试工程

说明如何在开发环境的第二个实例中创建测试工程。往测试工程中添加代码来调用 CoffeeMonitor 方法。

vbconCreatingPropertiesMethods 模式和无模式窗体在进程外如何运转

说明了当它们与客户的主窗体不在同一个进程中时,模式窗体和无模式窗体显示是不同的。

vbconAddingCodeForInitializeTerminateEvents 提供异步通知事件

说明如何建立向一个或多个客户提供异步通知的对象。

vbconRunningProject 接收异步通知事件

往客户中添加代码来请求异步通知,并当通知事件发生时采取某些行动的代码。

vbconSharingCoffeeMonitor 共享 CoffeeMonitor

创建 Connector 对象,客户可以用它来获取对于单个共享的 CoffeeMonitor 实例的引用。

vbconUsingSharedCoffeeMonitor 使用共享的 CoffeeMonitor

往客户中添加代码来申请 Connector 对象,然后调用 CoffeeMonitor 的属性来获得对共享的 CoffeeMonitor 对象的引用。

vbconCreatingTestingExecutable 创建并测试可执行的 Coffee

编译 Coffee 部件和 CoffeeWatch 测试程序。用一个 Coffee.exe 实例来运行 CoffeeWatch 工程和几个 CoffeeWatch.exe 实例。

vbconCTcmp02Recap 总结 ActiveX EXE 部件的创建

概述进程外部件的设计和创建一般过程。


准备工作

如果按下述方式设置了开发环境,这些过程就会变得更容易了。

要准备工作,请按照以下步骤执行:

  1. 在“视图”菜单上,单击“工具箱”打开工具箱。

  2. 在“视图”菜单上,单击“工程资源管理器”打开“工程资源管理器”窗口。“工程资源管理器”窗口将广泛使用于工程文件之间的切换。

  3. 如果“工程资源管理器”窗口在文件夹状态,单击“工程资源管理器”窗口工具栏上的“切换文件夹”按钮关闭文件夹。如下面所示。

  4. 在“视图”菜单上,单击“属性窗口”打开“属性”窗口。

  5. 在“工具”菜单上,单击“选项”打开“选项”对话框。

    选中“编辑器”选项卡,并确认“要求变量声明”被选中。这样很容易捕捉键盘输入错误。

    选中“环境”选项卡。确认“提示保存改变”被选中,然后单击“确定”。这样当您离开时,很容易保存对工程所做的变更。

示例应用程序

Coffee2.vbp, CoffWat2.vbp, MTCoffee.vbp.

Coffee2.vbp 和 CoffWat2.vbp 包含本章的扩展的源代码。除了使用事件的异步通知外,它们还包括在辅助接口上使用回调方法的替换版本,以及可用来替代计时器控件的全代码 Timer 示例。MTCoffee 说明了多线程的某些特征。示例应用程序列在Samples 目录中。