公开Owner-Drawn列表框项

应用程序开发人员无需实现 IAccessible 来公开具有 样式LBS_HASSTRINGS 的所有者绘制列表框中的项目,因为 Microsoft Active Accessibility 会使用此样式公开列表框中的项。 所有者绘制的列表框中具有 LBS_HASSTRINGS 样式的项目显示为文本。 但是,此样式也用于不显示文本的所有者绘制列表框,以便 Microsoft Active Accessibility 公开列表框项。

若要允许 Microsoft Active Accessibility 公开所有者绘制的列表框中不显示文本的项目,

  • 创建列表框时,请使用 LBS_HASSTRINGS 样式。
  • 创建一个文本对应项,用于命名或描述列表框中的每一项。
  • 将项添加到所有者绘制的列表框中时,请使用 LB_ADDSTRING 消息添加希望 Microsoft Active Accessibility 公开的文本。 此文本不显示,因此它不是所有者绘制的数据的一部分。 使用 LB_SETITEMDATA 消息添加所有者绘制的项数据。

使用上述方法时,请注意以下事项:

  • 如果使用 LBS_SORT 样式,则使用提供的字符串而不是 WM_COMPAREITEM 回调过程对列表框进行排序。
  • 对于使用样式LBS_OWNERDRAWVARIABLE创建的所有者绘制的变量列表框,请使用全局变量或其他某种机制来跟踪 MEASUREITEMSTRUCTitemData 成员何时有效。 需要全局变量,因为系统在添加字符串后、附加项数据之前立即发送 WM_MEASUREITEM 消息,此时 itemData 成员无效。
  • 若要更改具有 LBS_HASSTRINGS 样式的列表框中项的字符串,请删除带有 LB_DELETESTRING 消息的项,并添加包含LB_ADDSTRING消息的新字符串。