Welche Lösung unterstützt IAccesible Interface für das Verschieben von Einfügemarken in Texteditoren?

Ich möchte einen Texteditor von Grund auf neu implementieren, der eine zugängliche Schnittstelle unterstützt. Ich benutze MFC und Win32 API.

Wenn sich die Caret-Position in den Standard-Texteditoren wie Notepad ändert, wird der entsprechende Buchstabe, das Wort oder die Zeile zur Caret-Bewegung von Client-Tools wie Narrator, JAWS usw. ausgesprochen. Ich weiß nicht, wie diese Funktion implementiert wird. Ich suche im Internet und lese die MSDN-Dokumentation.

Ich lese inhttp://msdn.microsoft.com/en-us/library/dd317978.aspx undhttp://msdn.microsoft.com/en-us/library/dd373892.aspx Dieser Client fragt nach der Methode AccessibleObjectFromWindow unter dem Betriebssystem und sendet WM_GETOBJECT an die Anwendung. WM_GETOBJECT-Nachrichten, die in der entsprechenden Fenster-Rückruffunktion empfangen wurden, aber hWnd für das Caret-Bewegungsereignis ist NULL. Ich habe die Thread-Nachrichtenwarteschlange überprüft, aber WM_GETOBJECT wurde in der Thread-Nachrichtenwarteschlange überhaupt nicht empfangen.

Eine Methode, die etwas funktioniert hat, aber nicht die richtige Lösung ist, aufzurufen

NotifyWinEvent( EVENT_OBJECT_NAMECHANGE, hwnd, OBJID_CLIENT, CHILDID_SELF )

wenn sich das Caret vom Benutzer bewegt. Und wenn der Kunde nach dem geänderten Namen fragt, gebe ich den entsprechenden Text in Bezug auf die Caret-Bewegung zurück.

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage