Поделиться через


Предоставление 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, используйте глобальную переменную или другой механизм для отслеживания допустимости элемента itemDataобъекта MEASUREITEMSTRUCT . Глобальная переменная необходима, так как система отправляет сообщение WM_MEASUREITEM сразу после добавления строки, но до вложения данных элемента, и на этом этапе элемент itemData недопустим.
  • Чтобы изменить строку для элемента в списке со стилем LBS_HASSTRINGS , удалите элемент с сообщением LB_DELETESTRING и добавьте новую строку с сообщением LB_ADDSTRING.