值映射批注
使用值映射注释,可以使用映射字符串来指示列表视图或树视图中项的图像索引与其角色或状态的对应方式。 例如,映射字符串可能指示列表视图的图像索引 0 映射到检查框的角色,而图像索引 1 映射到单选按钮的角色。
还可以使用值映射注释来指定映射到滑块上的数值的字符串。
何时使用此方法
在以下情况下,请考虑使用值映射注释。
如果所有者绘制的列表视图或树视图合并了图像的使用,并且你想要提供自定义辅助说明 (Description 属性基于该图像) 。 下图显示了一个示例。
当所有者绘制的列表视图或树视图控件合并图像的使用以使树或列表项像简单控件(通常是复选框或单选按钮)时,并且你想要将图像映射到角色。 以下屏幕截图显示了一个示例。
使用滑块选择可描述为简单整数以外的值时,如以下屏幕截图所示,其中屏幕分辨率设置由字符串描述。
使用值映射注释时,映射字符串指示列表或树的图像索引与其角色或状态的对应方式。 或者,它可以指示滑块的数值与字符串的对应方式。 例如,映射字符串可能指示列表视图的图像索引 0 映射到检查框的角色,图像索引 1 映射到单选按钮的角色。 使用 IAccPropServices::SetHwndPropStr () 将映射字符串附加到控件。
由于支持值映射需要特定于控件的知识,因此支持值映射注释的控件和属性数量有限,包括滑块值映射、列表视图和树视图。
滑块值映射
PROPID_ACC_VALUEMAP 包含从内部滑块位置到人类可读字符串的映射。 Oleacc.dll滑块代理支持此属性。 如果在值映射中找到当前滑块值,则相应的字符串将公开为值,而不是默认的百分比字符串 (例如“50”) 。
列表视图和树视图
PROPID_ACC_ROLEMAP、 PROPID_ACC_STATEMAP和 PROPID_ACC_DESCRIPTONMAP 提供从状态映像索引到角色和状态值的映射。 这些映射允许将这些映像索引映射到通常 (ROLE_SYSTEM_RADIOBUTTON 或 ROLE_SYSTEM_CHECKBUTTON) 的适当角色, (通常 STATE_SYSTEM_CHECKED) 的其他状态位。
有关值映射注释的详细信息,请参阅以下主题:
批注映射格式
下表描述了批注映射中包含的字段。
字段 | 说明 |
---|---|
“A” | 指示使用特定的编码方案。 将来的编码方案可能支持其他前缀。 |
分隔符字符 | 通常使用冒号 (:) ,但可以是 除 NULL 或空格以外的其他字符。 由于此字符将用作剩余字段的分隔符,因此它不能用作映射中值的一部分。 |
0、1 或 2 | 一个值,该值指示正在使用哪个键。 对于树视图和列表视图角色和状态映射,此键可以是 0 (图像索引) 、1 (状态图像索引) 或 2 (覆盖图像索引) 。 对于不提供键选择的滑块和其他控件,此值必须为 0。 |
分隔符字符 | : |
键值对 | 每对由一个键字符串和一个分隔符字符组成。 键字符串是一个数字,可以采用十进制或十六进制 (,) 格式带有前导前缀“0x”。 |
值字符串 | 对于值映射,这是一个字符串。 对于角色和状态映射,这是 (十进制或十六进制) 的数字。 |
分隔符字符 | : |
例如,地图可能如下所示:
A:0:0:Cold:1:Warm:3:Hot:
将此值映射应用于滑块控件时,当滑块位于位置 1 时,将公开值“Warm”。 由于值 2 未包含在此示例中,因此将公开该位置的默认值。 对于滑块,默认值为百分比值,例如 33。