ActiveX 控件注册表信息

使用的注册表项和标志有很多。 此外,控件还可支持组件类别,以便对其提供的功能进行分类。

与控件相关的注册表键值在以下树形图中标有星号:

HKEY_CLASSES_ROOT
   CLSID
      {control_CLSID}
         ProgID = <identifier>
         InprocServer32 = <filename>.dll
         *DefaultIcon = <filename>.<ext>,resourceID
         *ToolboxBitmap32 = <filename>.<ext>,resourceID
         *Control
         verb
            *n = &Properties...
         *MiscStatus = 0
         TypeLib = {object_typelibID}
         *Version = version_number

DefaultIcon 条目用于确定控件最小化为图标时要显示的图标。 ExtractIcon函数用于从指定的 .DLL 或 .EXE 文件中获取图标。

ToolboxBitmap32 条目标识了用于工具栏或工具箱按钮表面的 16*15 位图的模块名称和资源标识符。 标准 Windows 图标尺寸太大,无法用于此目的。 此条目专门支持具有设计模式的控件容器,在这种模式下,可以选择控件并将其放置到正在设计的窗体中。 例如,在 Visual Basic 中,控件的图标会在设计模式下显示在 Visual Basic 工具箱中。

Control 条目会将一个对象标记为控件。 容器通常使用此条目来填充对话框。 容器使用该子键来确定是否在显示控件的对话框中包含对象。

Insertable 子键也可与控件一起使用,这取决于对象是否只能作为无特殊控制功能的就地嵌入对象。 标有 Insertable 的对象会出现在其容器的“插入对象”对话框中。 Insertable 条目通常表示控件已与非控件容器一起进行了测试。

InsertableControl 子键都是可选的。 如果控件并非是为了与不理解控件的旧容器配合使用而设计,则可以省略 Insertable 子键。 如果控件仅用于特定容器,因此不希望插入其他容器,则可以省略 Control 键。

控件应该有一个 Properties 动词 OLEIVERB_PROPERTIES,以及它们支持的其他动词。 Properties 动词以及标准动词 OLEIVERB_PRIMARY 会指示控件显示其属性表。 当控件处于活动状态时,Properties 动词将显示为容器菜单上的“属性”项。 这样,即使容器不处理控件,控件也可以显示自己的属性页面,从而为最终用户提供一些有用的功能。

控件定义了 MiscStatus 键,以便向潜在容器描述自己。 这些位的值来自 OLEMISC,控件会在此枚举中添加多个值。 有关详细信息,请参阅 OLEMISC 枚举值。 客户端可以通过调用 IOleObject::GetMiscStatus 来获取此信息,而无需先实例化控件。

最后,Version 描述了控件的版本,该版本应与与该控件相关联的类型库的版本相匹配。

此外,在控件的类型信息中,属性控件将一个 coclass 条目标记为描述一个控件。