Какое правильное решение поддерживает интерфейс IAccesible для перемещения каретки в текстовых редакторах?

Я хочу реализовать текстовый редактор с нуля, который поддерживает интерфейс IAccessible. Я использую MFC и Win32 API.

Когда позиция каретки изменяется в стандартных текстовых редакторах, таких как Блокнот, соответствующая буква, слово или строка движения каретки произносятся такими инструментами клиента, как Рассказчик, JAWS и т. Д.не знаю, как реализовать эту функцию. Я ищу в Интернете и читаю документацию MSDN.

Я читаю вhttp://msdn.microsoft.com/en-us/library/dd317978.aspx а такжеhttp://msdn.microsoft.com/en-us/library/dd373892.aspx тот клиент запрашивает каретку с помощью метода AccessibleObjectFromWindow из ОС, и ОС отправляет WM_GETOBJECT приложению. Сообщения WM_GETOBJECT получены в соответствующей функции обратного вызова окна, но hWnd для события перемещения каретки равно NULL. Я проверил очередь сообщений потока, но WM_GETOBJECT не сделалвообще получить в очереди сообщений потока.

Один метод, который работал несколько, но не правильное решение, это вызвать

NotifyWinEvent( EVENT_OBJECT_NAMECHANGE, hwnd, OBJID_CLIENT, CHILDID_SELF )

когда каретка перемещается пользователем. И когда клиент запрашивает измененное имя, я возвращаю соответствующий текст, связанный с движением каретки.

HRESULT  CMyEditor::get_accName(VARIANT varChild, BSTR *pszName)
{
   *pszName = SysAllocString( L"CORESPONDING TEXT TO THE CARET MOVEMENT" );
   return S_OK;
}

Ответы на вопрос(1)

Ваш ответ на вопрос