使用值映射批注

创建值映射

  1. 创建映射字符串。

    映射字符串是控件的数值列表,对应于 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 属性时,结果为字符串。 字符串不带引号,冒号充当分隔符。

    有关详细信息,请参阅 批注映射格式

  2. 创建批注管理器并获取指向其IAccPropServices接口的指针。

    下面是如何创建批注管理器的示例。

    IAccPropServices * pAccPropSvc = NULL;
    HRESULT hr = CoCreateInstance(CLSID_AccPropServices, NULL,
    CLSCTX_SERVER, IID_IAccPropServices, (void**) & pAccPropSvc));
    
    
  3. 将映射字符串附加到 控件。

    调用 IAccPropServices::SetHwndPropStr,传递控件的 HWND 和指向映射字符串的指针。

    IdProp 参数将是以下参数之一。

    参数 用途
    MSAAPROPID_ROLEMAP 为列表视图或树视图控件设置角色映射。
    MSAAPROPID_STATEMAP 设置列表视图或树视图控件的状态映射。
    PROPID_ACC_DESCRIPTIONMAP 设置列表视图或树视图的说明映射。
    MSAAPROPID_VALUEMAP 在滑块控件上设置值映射。

     

  4. 清理。

    在销毁任何值映射批注控件之前, (例如,在处理 WM_DESTROY) 时,必须清除以前注册的属性并释放批注管理器。

    为此,请根据需要调用 IAccPropServices::ClearHwndProps 并释放指向 IAccPropServices 的指针。

有关示例代码,请参阅 值映射注释示例