值映射注释

使用值映射注释,可以使用映射字符串来指示列表视图或树视图中项的图像索引如何与其角色或状态相对应。 例如,映射字符串可能指示列表视图的图像索引 0 映射到复选框的角色,而图像索引 1 映射到单选按钮的角色。

还可以使用值映射注释来指定映射到滑块上的数值的字符串。

何时使用此技术

请考虑在以下情况下使用值映射注释。

  • 当所有者绘制的列表视图或树视图合并图像的使用时,你希望提供基于该图像的自定义辅助说明(Description 属性)。 下图显示了一个示例。

    “开始”菜单的插图,其中图标为内容提供视觉线索

  • 当所有者绘制的列表视图或树视图控件包含图像的使用,以使树或列表项的行为类似于简单控件,通常是复选框或单选按钮,并且你想要将图像映射到角色。 以下屏幕截图显示了一个示例。

    internet explorer 选项的屏幕截图,用于设置复选框和单选按钮的值

  • 当滑块用于选择可描述为简单整数以外的值时,如以下屏幕截图所示,其中屏幕分辨率设置由字符串描述。

    用于设置屏幕分辨率的滑块的屏幕截图

使用值映射注释,映射字符串指示列表或树的图像索引如何与其角色或状态相对应。 或者,它可以指示滑块的数值如何与字符串相对应。 例如,映射字符串可能指示列表视图的图像索引 0 映射到复选框的角色,图像索引 1 映射到单选按钮的角色。 使用 IAccPropServices::SetHwndPropStr() 将映射字符串附加到控件。

由于支持值映射需要特定于控件的知识,因此支持值映射注释的控件和属性数量有限,包括滑块值映射、列表视图和树视图。

滑块值映射

PROPID_ACC_VALUEMAP 包含从内部滑块位置到人类可读字符串的映射。 Oleacc.dll 滑块代理支持此属性。 如果在值映射中找到当前滑块值,则相应的字符串将公开为值而不是默认百分比字符串(例如,“50”)。

列表视图和树视图

PROPID_ACC_ROLEMAPPROPID_ACC_STATEMAPPROPID_ACC_DESCRIPTONMAP 提供从状态映像索引到角色和状态值的映射。 这些映射允许将这些映像索引映射到适当的角色(通常为 ROLE_SYSTEM_RADIOBUTTONROLE_SYSTEM_CHECKBUTTON)和其他状态位(通常 STATE_SYSTEM_CHECKED)。

有关值映射注释的详细信息,请参阅以下主题:

批注映射格式

下表描述了批注映射中包含的字段。

描述
“A” 指示使用了特定的编码方案。 将来的编码方案可能支持其他前缀。
分隔符字符 通常使用冒号(:),但可以是除 NULL 或空白以外的另一个字符。 由于此字符将用作其余字段的分隔符,因此不能将其用作映射中的值的一部分。
0、1 或 2 一个值,该值指示正在使用哪个键。 对于树视图和列表视图角色和状态映射,此键可以是 0(图像索引)、1(状态图像索引)或 2(覆盖图像索引)。 对于不提供键选项的滑块和其他控件,此值必须为 0。
分隔符字符 :
键值对 每对由一个键字符串和一个分隔符组成。 键字符串是一个数字,可以采用十进制或十六进制(带前导“0x”前缀)格式。
值字符串 对于值映射,这是一个字符串。 对于角色和状态映射,这是一个数字(十进制或十六进制)。
分隔符字符 :

 

例如,地图可能如下所示:

A:0:0:Cold:1:Warm:3:Hot:

当此值映射应用于滑块控件时,当滑块位于位置 1 时,将公开“暖”的值。 由于此示例中不包含值 2,因此将公开该位置的默认值。 对于滑块,默认值为百分比值,例如 33。