使用值映射批注
创建值映射
创建映射字符串。
映射字符串是控件的数值列表,对应于 Unicode 中人类可读的字符串。 它以“A:”开头,后跟指示所用索引类型的数字。 仅支持图像索引;因此,索引类型始终为 0。
字符串后跟 :index:result 对。 “index”是一个数字,表示List-View或树视图的图像索引,或滑块控件的值。
生成的值是在映射列表视图或树视图控件的 Role 或 State 属性时获取的数字。 此类数字以十进制或十六进制形式表示,前缀为“0x”。
映射字符串始终以最后一个冒号 (“:”) 结尾。
下面是列表视图或树视图控件中检查框的“状态”和“角色”属性的批注映射示例。 视图中有两个表示检查框的项,每个项都有对应于选中和未选中状态的图像。
LPCWSTR g_ListOrTreeStateMap = L"A:0" // Index type; always 0. ! L":0:0x00" // Image 0 is normal ! L":1:0x10" // Image 1 is checked - STATE_SYSTEM_CHECKED (0x10) ! L":"; LPCWSTR g_ListOrTreeRoleMap = L"A:0" // Index type; always 0. ! L":0:0x2C" // Image 0 is a check box - ROLE_SYSTEM_CHECKBUTTON (0x2c) ! L":1:0x2C" // image 1 is also a check box ! L":";
有关有效的角色和状态值,请参阅 对象角色 和 对象状态常量。
映射滑块控件的属性时,索引值可能是负值。
映射 Value 或 Description 属性时,结果为字符串。 字符串不带引号,冒号充当分隔符。
有关详细信息,请参阅 批注映射格式。
创建批注管理器并获取指向其IAccPropServices接口的指针。
下面是如何创建批注管理器的示例。
IAccPropServices * pAccPropSvc = NULL; HRESULT hr = CoCreateInstance(CLSID_AccPropServices, NULL, CLSCTX_SERVER, IID_IAccPropServices, (void**) & pAccPropSvc));
将映射字符串附加到 控件。
调用 IAccPropServices::SetHwndPropStr,传递控件的 HWND 和指向映射字符串的指针。
IdProp 参数将是以下参数之一。
参数 用途 MSAAPROPID_ROLEMAP 为列表视图或树视图控件设置角色映射。 MSAAPROPID_STATEMAP 设置列表视图或树视图控件的状态映射。 PROPID_ACC_DESCRIPTIONMAP 设置列表视图或树视图的说明映射。 MSAAPROPID_VALUEMAP 在滑块控件上设置值映射。 清理。
在销毁任何值映射批注控件之前, (例如,在处理 WM_DESTROY) 时,必须清除以前注册的属性并释放批注管理器。
为此,请根据需要调用 IAccPropServices::ClearHwndProps 并释放指向 IAccPropServices 的指针。
有关示例代码,请参阅 值映射注释示例。