Freigeben über


Kontexte bearbeiten

Anwendungen

Um einen Bearbeitungskontext zu erstellen, ruft eine Anwendung ITfDocumentMgr::CreateContext auf.

Textdienste

Ein Textdienst verwendet häufig den aktuell aktiven Bearbeitungskontext. Der aktuell aktive Bearbeitungskontext ist der Bearbeitungskontext oben im Stapel des aktiven Dokument-Managers. Um den aktuell aktiven Kontext abzurufen, ruft ein Textdienst ITfThreadMgr::GetFocus auf, um den aktiven Dokument-Manager abzurufen, und ruft dann ITfDocumentMgr::GetTop auf, um den Bearbeitungskontext am oberen Rand des Stapels abzurufen.

In einigen Fällen erfordert ein Textdienst einen eigenen Bearbeitungskontext. Um einen Bearbeitungskontext zu erstellen, ruft ein Textdienst ITfDocumentMgr::CreateContext auf.

Cookies bearbeiten

Viele Methoden, z. B. ITfRange::SetText, erfordern eine Möglichkeit, einen Bearbeitungskontext zu identifizieren, der über eine schreibgeschützte oder schreibgeschützte Dokumentsperre verfügt. Eine Dokumentsperre wird durch eine Aushandlung zwischen dem TSF-Manager und der Anwendung abgerufen. Ein Textdienst kann diese Aushandlung nicht direkt ausführen. Ein Textdienst kann nur eine Sperre abrufen, indem er eine Bearbeitungssitzung mit einem bestimmten Kontext und schreibgeschützten oder Lese-/Schreibzugriff anfordert. Wenn die Bearbeitungssitzung gewährt wird, wird dem Textdienst ein Bearbeitungscooky bereitgestellt, das den Bearbeitungskontext mit dem angeforderten Zugriff identifiziert. Dieses Cookie wird dann an die -Methode übergeben, um den Bearbeitungskontext mit dem richtigen Zugriff zu identifizieren.

ITfDocumentMgr::CreateContext stellt auch ein Bearbeitungscooky für den Kontextersteller bereit. Dieses Cookie hat schreibgeschützten Zugriff, und es gibt keine Möglichkeit, die Zugriffsebene zu ändern. Tatsächlich verhandelt der TSF-Manager keine Dokumentsperre für dieses Bearbeitungscookies. Das Cookie ist intern als schreibgeschützt gekennzeichnet, aber das Dokument ist nicht tatsächlich gesperrt. Wenn der Kontextersteller beispielsweise ITfContext::GetSelection mit dem von ITfDocumentMgr::CreateContext zurückgegebenen Bearbeitungscookie aufruft, führt dies dazu, dass ITextStoreACP::GetSelection oder ITextStoreAnchor::GetSelection der Anwendung aufgerufen wird. Vor dem Abrufen der Auswahl bestimmt die Anwendung, ob eine Dokumentsperre vorhanden ist. Da keine Sperre vorhanden ist, schlägt die Anwendung mit TS_E_NOLOCK fehl. Das heißt, wenn eine Anwendung eine Methode mit diesem Cookie aufruft, die dazu führt, dass eine der Textspeichermethoden der Anwendung aufgerufen wird, muss sie diesen Fall intern behandeln, da die Anwendung tatsächlich keine Dokumentsperre aufweist.

Wenn der Kontextersteller ein Bearbeitungscooky mit Lese-/Schreibzugriff benötigt, muss er eine eigene Bearbeitungssitzung einrichten.

ITfContext

ITfDocumentMgr::CreateContext

ITfThreadMgr::GetFocus

ITfDocumentMgr::GetTop

ITfRange::SetText

Dokumentsperren

Bearbeitungssitzungen

ITfContext::GetSelection

ITextStoreACP::GetSelection

ITextStoreAnchor::GetSelection