SelectionTree 控件

通过此控件,用户可以更改 功能表中列出的功能的选择状态。 该控件与用户可以通过 “浏览”对话框设置的字符串值属性相关联。 通过在 控件表的“属性”列中输入属性的名称,可以将控件与属性相关联。

SelectionTree 控件会自动在 Windows XP 或早期作系统上发布以下 控件事件。 当所选项从一个节点更改为另一个节点时,SelectionTree 控件会发布这些事件。 如果选择树没有节点,控件将发布这些事件,并清除订阅事件的控件的内容。 这些 ControlEvent 不需要列在 ControlEvent 表中。

Control 事件 描述
SelectionAction UIText 表发布字符串, 描述突出显示的项。
SelectionBrowse 生成用于修改突出显示项的路径的“浏览”对话框。
SelectionDescription 功能表发布字符串, 描述突出显示的项。
SelectionNoItems 删除描述性文本或禁用已过时项的按钮。
SelectionPath 发布突出显示项的路径。
SelectionPathOn 发布与当前所选功能关联的选择路径。
SelectionSize 发布突出显示项的大小。

 

从 Windows Server 2003 系统开始,SelectionTree 控件会发布上表中的所有事件,此外,还发布 DoAction ControlEventSetProperty ControlEvent。 必须将记录添加到 ControlEvent 表 才能发布 DoAction 或 SetProperty ControlEvents。

Control 事件 描述
DoAction 通知安装程序执行自定义作。
SetProperty 将属性设置为新值。

 

从 Windows Installer 版本 3.0 开始,SelectionTree 控件发布 自定义作ControlEvent 表中列出的事件。 只要功能选择在控件中发生更改或为当前功能选择不同的选择状态时,SelectionTree 控件都发布此事件。 每次发布事件时,自定义作都会运行。 SelectionTree 控件通过设置以下属性的值将信息发送到自定义作。 当 SelectionTree 控件关闭时,将清除所有这些属性。

Windows Installer 2.0:不支持。 SelectionTree 控件不发布事件,也不会设置以下属性。

财产 描述
MsiSelectionTreeSelectedFeature 功能表的“功能”字段中所选功能的名称
MsiSelectionTreeSelectedAction 所选功能的安装作状态。 该值可以是INSTALLSTATE_ABSENT、INSTALLSTATE_LOCAL、INSTALLSTATE_SOURCE或INSTALLSTATE_ADVERTISED。
MsiSelectonTreeChildrenCount 直接子节点数。
MsiSelectionTreeInstallingChildrenCount INSTALLSTATE_LOCAL、INSTALLSTATE_SOURCE 或INSTALLSTATE_ADVERTISED的直接子节点数。
MsiSelectionTreeSelectedCost 以 512 字节为单位安装所选功能的成本。
MsiSelectionTreeChildrenCost 以 512 字节为单位安装所有子功能的成本。
MsiSelectionTreeSelectedPath 正在安装所选功能的路径。 仅在将该功能安装为INSTALLSTATE_LOCAL时才定义。

 

注意

SelectionTree 控件控件永远不会显示 控件表“文本”字段的内容。 相反,此字段指定控件要显示的文本样式,并包含屏幕审阅实用工具使用的控件的说明。 若要设置文本字符串的字体和字体样式,请使用 {\style} 或 {&样式的字符串作为前缀,}。 其中样式是 TextStyle 表的 TextStyle 列中列出的标识符。 如果这两者都不存在,但 DefaultUIFont 属性被定义为有效的文本样式,则使用该字体。 屏幕评审实用工具将阅读以下信息作为控件的说明。 请参阅 辅助功能

 

控件属性

可以将以下属性用于此控件。 若要使用事件更改属性的值,请将控件订阅到 EventMapping 表中的 ControlEvent,并在 Attribute 列中列出属性的标识符。 在事件列中输入 ControlEvent 的标识符。

属性标识符 十六进制位 描述
IndirectPropertyName 与控件关联的间接属性的名称。 如果设置了 Indirect 属性位,控件将显示或更改具有此名称的属性的值。 如果设置了 Indirect 属性位,则此名称也是 Control 表的“属性”列中列出的属性的值
位置 控件在对话框中的位置。 将控件左角的宽度、高度和坐标输入到 控件表的 Width、Height、X 和 Y 列。 使用 安装程序单位 长度和距离。
PropertyName 与此控件关联的属性的名称。 如果未设置间接属性位,控件将显示或更改具有此名称的属性的值。 此属性在 Control 表的属性列中指定。
PropertyValue 此控件显示或更改的属性的当前值。 如果未设置 Indirect 属性位,则此值为 PropertyName 的值。 如果设置了 Indirect 属性位,则这是 IndirectPropertyName 的值。 如果属性发生更改,控件将反映新值。
文本 根据 控件表的“文本”列中输入的文本,在屏幕阅读器中显示文本。 请参阅 辅助功能
可见 0x00000000 0x00000001
隐藏的控件。 可见控件。
将此位包含在 Control 表的 Attributes 列的位词中, 以使控件在创建时可见或隐藏。
还可以使用 ControlCondition 表隐藏或显示控件。
已启用 0x00000000 0x00000002
处于禁用状态的控制。 处于启用状态的控制。
控件 的属性列中将此位包含在位词中,以便在创建时启用控件。
也可以使用 ControlCondition 表启用或禁用控件。
沉没 0x00000000 0x00000004
显示默认视觉样式。 显示具有沉没的 3D 外观的控件。
将这些位包含在 控件表的“属性”列中的位词中。
间接 0x00000000 0x00000008
该控件显示或更改 控件表的“属性”列中的属性的值。 该控件显示或更改属性的值,该属性的“标识符”列在控件表的“属性”列中列出。
确定是否间接引用与此控件关联的属性。
RTLRO 0x00000000 0x00000020
控件中的文本按从左到右的阅读顺序显示。 控件中的文本以从右到左的阅读顺序显示。
RightAligned 0x00000000 0x00000040
控件中的文本与左侧对齐。 控件中的文本与右侧对齐。
LeftScroll 0x00000000 0x00000080
滚动条位于控件右侧。 滚动条位于控件左侧。
BiDi 0x000000E0 RTLRORightAlignedLeftScroll 属性的组合设置此值。

 

言论

可以使用 CreateWindowEx 函数从 WC_TREEVIEW 类创建此控件。 它具有 WS_BORDERTVS_HASLINESTVS_HASBUTTONSTVS_LINESATROOTTVS_DISABLEDRAGDROPTVS_SHOWSELALWAYSWS_CHILDWS_TABSTOPWS_GROUP 样式。

仅当调用 CostInitialize作CostFinalize作 时,才会填充选择树。

UIText 表 中的以下字符串与此控件相关。

术语 描述
AbsentPath
为处于不存在状态的项显示的路径。

 

以下六个字符串用于显示所选子项数和与突出显示项关联的大小:

  • SelChildCostPos
  • SelChildCostNeg
  • SelParentCostPosPos
  • SelParentCostPosNeg
  • SelParentCostNegPos
  • SelParentCostNegNeg

以下字符串用于在弹出菜单中显示项的可用选择选项:

  • MenuAbsent
  • MenuLocal
  • MenuCD
  • MenuNetwork
  • MenuAllLocal
  • MenuAllCD
  • MenuAllNetwork

以下字符串用于解释 SelectionDescription ControlEvent 中的当前选定内容。

  • SelAbsentAbsent
  • SelAbsentLocal
  • SelAbsentCD
  • SelAbsentNetwork
  • SelLocalAbsent
  • SelLocalLocal
  • SelLocalCD
  • SelLocalNetwork
  • SelCDAbsent
  • SelNetworkAbsent
  • SelCDLocal
  • SelNetworkLocal
  • SelCDCD
  • SelNetworkNetwork

以下四个本地化字符串用于格式化文件的大小:

  • 字节
  • KB
  • MB
  • GB