Предоставление 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.