值映射批注

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

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

何时使用此方法

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

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

    illustration of the start menu, where icons provide visual clues to contents

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

    screen shot of internet explorer options for setting the value of check boxes and radio buttons

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

    screen shot of a slider that is used to set screen resolution

使用值映射注释时,映射字符串指示列表或树的图像索引如何与其角色或状态相对应。 或者,它可以指示滑块的数值如何与字符串相对应。 例如,映射字符串可能指示列表视图的图像索引 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。