4

I have implemented custom Win32 control based on RichEdit. I insert custom OLE objects into the rich text using method 'InsertObject' of the IRichEditOle. Custom objects just show some text and some more additional functionality. This my control is similar to the Outlook's control which allows user to enter email addresses.

I have a problem with accessibility support. I want to implement functionality the same as Outlook. I want that screenreaders (for example Narrator or Thunder Storm) reads all the text including content of the inserted OLE objects.

I have tried to implement IAccessible interface which is returned on the message WM_GETOBJECT. I return some reasonable value from the 'get_accRole' and 'get_accName'. Accessible role is 'editable text'. Also I return string which represents the whole control content from the method 'get_accValue'.

I tested my implementation using application Inspet.exe from Windows Kits. I see acc role, name value which I provides in the IAccessible methods.

THE PROBLEM IS: Screenreaders do not read the whole content of the control. Screenreaders read the only text entered to the control, but not the content of the inserted objects.

I suggest that Screenreaders do not use IAccessible interface for RichEdit control.

My question to the comunity: does anybody have experince with Accessibility support for the RichEdit control with inserted OLE objects. What I should provide for Screenreader?

Ian Boyd
  • 246,734
  • 253
  • 869
  • 1,219
  • [From Mozilla](https://developer.mozilla.org/en-US/docs/Web/Accessibility/Implementing_MSAA_server): "On Microsoft Windows, these kinds of assistive technology acquire this necessary information via a combination of hacks, MSAA and proprietary DOMs. MSAA is supposed to be the "right way" for accessibility aids to get information, but sometimes the hacks are more effective." So it is possible that a screen reader might bypass `IAccessible` if it feels it has a better way to get the content is reads. – Remy Lebeau Aug 13 '14 at 20:56

0 Answers0