Winapi 基于RichEdit的Win32控件的可访问性支持

Winapi 基于RichEdit的Win32控件的可访问性支持,winapi,accessibility,win32com,screen-readers,richedit,Winapi,Accessibility,Win32com,Screen Readers,Richedit,我已经实现了基于RichEdit的自定义Win32控件。我使用IRichEditOle的“InsertObject”方法将自定义OLE对象插入到富文本中。自定义对象只显示一些文本和一些附加功能。 此my控件类似于Outlook的控件,允许用户输入电子邮件地址 我在辅助功能支持方面有问题。我想实现与Outlook相同的功能。我希望屏幕阅读器(例如“讲述人”或“雷雨”)读取所有文本,包括插入的OLE对象的内容 我已经尝试实现在消息WM_GETOBJECT上返回的IAccessible接口。 我从“g

我已经实现了基于RichEdit的自定义Win32控件。我使用IRichEditOle的“InsertObject”方法将自定义OLE对象插入到富文本中。自定义对象只显示一些文本和一些附加功能。 此my控件类似于Outlook的控件,允许用户输入电子邮件地址

我在辅助功能支持方面有问题。我想实现与Outlook相同的功能。我希望屏幕阅读器(例如“讲述人”或“雷雨”)读取所有文本,包括插入的OLE对象的内容

我已经尝试实现在消息WM_GETOBJECT上返回的IAccessible接口。 我从“get\u accRole”和“get\u accName”返回一些合理的值。可访问角色为“可编辑文本”。我还返回字符串,该字符串表示方法“get_accValue”中的整个控件内容

我使用Windows工具包中的应用程序Inspet.exe测试了我的实现。我看到了我在IAccessible方法中提供的acc角色、名称值

问题在于:屏幕阅读器无法读取控件的全部内容。屏幕阅读器只读取输入到控件的文本,而不读取插入对象的内容

我建议屏幕阅读器不要为RichEdit控件使用IAccessible接口

我向comunity提出的问题:是否有人对带有插入OLE对象的RichEdit控件的可访问性支持有经验。我应该为Screenreader提供什么?

:“在Microsoft Windows上,这些辅助技术通过黑客、MSAA和专有DOM的组合获取这些必要的信息。MSAA被认为是无障碍辅助工具获取信息的“正确方式”,但有时黑客更有效。”因此,如果屏幕阅读器认为有更好的方式获取内容,它可能会绕过
IAccessible