Поддержка специальных возможностей для элемента управления Win32 на основе RichEdit
Я реализовал пользовательский элемент управления Win32 на основе RichEdit. Я вставляю пользовательские объекты OLE в форматированный текст, используя метод "InsertObject" из IRichEditOle. Пользовательские объекты просто показывают текст и некоторые дополнительные функции. Этот элемент управления похож на элемент управления Outlook, который позволяет пользователю вводить адреса электронной почты.
У меня проблема с поддержкой доступности. Я хочу реализовать функциональность так же, как Outlook. Я хочу, чтобы программы чтения с экрана (например, Narrator или Thunder Storm) считывали весь текст, включая содержимое вставленных объектов OLE.
Я попытался реализовать интерфейс IAccessible, который возвращается в сообщении WM_GETOBJECT. Я возвращаю некоторое разумное значение из 'get_accRole' и 'get_accName'. Доступная роль - "редактируемый текст". Также я возвращаю строку, которая представляет все содержимое элемента управления из метода 'get_accValue'.
Я протестировал свою реализацию, используя приложение Inspet.exe из Windows Kits. Я вижу подходящую роль, значение имени, которое я предоставляю в методах IAccessible.
ПРОБЛЕМА ЕСТЬ: Программы чтения с экрана не читают весь контент элемента управления. Программы чтения с экрана читают только текст, введенный в элемент управления, но не содержимое вставленных объектов.
Я полагаю, что программы чтения с экрана не используют интерфейс IAccessible для управления RichEdit.
Мой вопрос к сообществу: есть ли у кого-нибудь опыт поддержки Accessibility для элемента управления RichEdit со вставленными объектами OLE. Что я должен предоставить для Screenreader?