ActiveX 控件体系结构

ActiveX 控件技术建立在 OLE 中许多低级别对象和接口的基础之上。 控件上的具体接口因其功能而异。 本节将详细介绍控件可能提供的功能。

ActiveX 控件用于为在应用程序中创建用户界面提供构建基块。 例如,在单击一个按钮后会启动容器应用程序中的某些操作,这就是一个简单的控件。 提供这些用户界面构建基块涉及以下几个方面:

  • 控件可以嵌入其容器客户端中,以支持客户端内的某些用户界面活动。 因此,当控件嵌入到容器中时,它需要提供自身的可视化表示形式,并需要提供保存其状态的方法,例如其属性值和在容器中的位置。 客户端必须支持成为一个嵌入对象的容器。
  • 通过使用键盘或鼠标激活控件,最终用户可在客户端应用程序中启动某些操作。 因此,控件必须对键盘活动做出响应,并且必须能够与其客户端通信,以便将其活动通知其容器,并触发客户端中的事件。
  • 客户端通常还提供一种编程语言,最终用户可以通过GIA语言来启动控件属性和方法提供的操作。 因此,控件还必须支持自动化和一些设计时与运行时功能。

由于控件在提供用户界面构建基块方面的作用,它通常使用 OLE 技术(如图所示)支持以下方面的功能:

属性和方法

与任何 OLE 对象一样,控件可以通过一组带有属性和方法的传入接口来提供其大部分功能。 容器可以提供其他环境属性,并支持通过聚合扩展控件的属性。 这些功能依赖于 OLE 自动化、属性页、可连接对象和 ActiveX 控制技术。

事件

除了提供属性和方法外,ActiveX 控件还可以提供传出接口来通知其客户端的事件。 客户端必须支持处理这些事件。 这些功能使用 OLE 自动化和可连接对象。

视觉表现

控件可以支持在其容器中定位和显示自身。 容器用于放置控件并确定其大小。 这些功能使用了复合文档技术,包括 OLE 拖放技术。

键盘处理

控件可对键盘加速器做出响应,以便最终用户启动控件执行的操作。 容器管理其所有嵌入控件的键盘活动。 这些功能使用了控制和复合文件技术。

持久性

控件可以保存其状态。 客户端管理其嵌入控件的持久性。 这些功能使用结构化存储和对象持久性技术。

注册和许可

控件通常支持自我注册,并在实例化时创建一组注册表项。 控件也可以授权使用,以防止未经授权的使用。

这些功能大多涉及控件及其客户端容器。

ActiveX 控件