我已经实现了基于RichEdit的自定义Win32控件。我使用IRichEditOle的方法'InsertObject'将自定义OLE对象插入到富文本中。自定义对象只显示一些文本和一些其他功能。 我的控件类似于Outlook的控件,允许用户输入电子邮件地址。
我遇到了辅助功能支持问题。我想实现与Outlook相同的功能。我希望屏幕阅读器(例如讲述人或者雷霆风暴)读取所有文本,包括插入的OLE对象的内容。
我试图实现在消息WM_GETOBJECT上返回的IAccessible接口。 我从'get_accRole'和'get_accName'返回一些合理的值。可访问的角色是“可编辑的文本”。此外,我返回字符串,表示方法'get_accValue'中的整个控件内容。
我使用Windows套件中的应用程序Inspet.exe测试了我的实现。我看到了acc角色,我在IAccessible方法中提供的名称值。
问题是:屏幕阅读器不会读取控件的全部内容。屏幕阅读器读取输入到控件的唯一文本,但不读取插入对象的内容。
我建议屏幕阅读器不要使用IAccessible接口进行RichEdit控制。
我对社区的问题:有没有人使用插入的OLE对象体验RichEdit控件的辅助功能支持。我应该为Screenreader提供什么?