外接程序的设计考虑

在创建外接程序之前,应决定外接程序要实现的目标,以及它的工作方式。CreateToolWindow 函数的使用和工程编译类型的选择是影响此决定的两个因素。

CreateToolWindow 函数

虽然 CreateToolWindow 函数不是外接程序的必需特性,但也许是许多外接程序要使用的特性。当创建外接程序时,按照缺省规定,外接程序使用的任何窗体都是 Visual Basic 窗体。尽管这对大多数应用程序是适用的,但有时可能希望外接程序窗口能够象 Visual Basic 的其它窗口那样,并与其它 IDE 窗口链接。创建这种窗口的方法是使用 ActiveX 文档和 CreateToolWindow 函数。

在 ToolWindow 中的 UserDocument 窗口创建一个 ActiveX 文档,该文档能与已存在的窗口链接,且动作很象 Visual Basic IDE 中的其它窗口。编写使用 CreateToolWindow 的外接程序还有助于把外接程序移植到 Visual Basic 的未来版本上。

作为如何在外接程序里使用 CreateToolWindow 的例子,请参看下面来自 TabOrder 示例应用程序(在Samples目录中)的片断:

Dim docTabOrderObject As Object  '用户的 doc 实例
'guidMYTOOL$ 常量是外接程序的唯一注册标识符。
Const guidMYTOOL$ = "{B7AFC8D0-EBE5-11cf-A497- _
   00A0C911E8B0}"
Set winWindow = _
gVBInstance.Windows.CreateToolWindow(gVBInstance. _
Addins("TabOrder.Connect"), "TabOrder.docTabOrder", _
LoadResString(10), guidMYTOOL$, docTabOrderObject)

以上代码创建了一个具有 ActiveX 文档的 Tool Window。

可用名叫 Guidgen.exe 的工具来生成自己的栅格字符串常量值,该工具位于 Visual Basic 的 \tools\idgen目录。

工程类型的选择

在进入外接程序的编写阶段之前,应该决定如何编译工程。

在大多数情况下,可能想把外接程序创建和编译成 ActiveX DLL 工程,这样,它就是进程中的部件。在 Visual Basic 中,进程中的部件,能提供更好的整体性能。

在下列情况下,可能想把外接程序编译成 .dll 文件:

然而,如果想让外接程序能脱离 Visual Basic 独立运行,且象在 Visual Basic 环境中一样,则可以把外接程序编译成 ActiveX.exe 文件。

当使用外接程序模板创建自己的外接程序时(推荐这样做),按照缺省规定,工程类型是 ActiveX EXE。可以在“工程属性”对话框的“通用”选项卡上改变工程类型。