Kontexte bearbeiten
Anträge
Zum Erstellen eines Bearbeitungskontexts ruft eine Anwendung ITfDocumentMgr::CreateContextauf.
Textdienste
Ein Textdienst verwendet häufig den aktuell aktiven Bearbeitungskontext. Der derzeit aktive Bearbeitungskontext ist der Bearbeitungskontext oben im Stapel des aktiven Dokument-Managers. Zum Abrufen des derzeit aktiven Kontexts ruft ein Textdienst ITfThreadMgr::GetFocus auf, um den aktiven Dokument-Manager abzurufen, und ruft dann ITfDocumentMgr::GetTop auf, um den Bearbeitungskontext oben im Stapel abzurufen.
In einigen Fällen erfordert ein Textdienst einen eigenen Bearbeitungskontext. Zum Erstellen eines Bearbeitungskontexts ruft ein Textdienst ITfDocumentMgr::CreateContextauf.
Cookies bearbeiten
Viele Methoden, z. B. ITfRange::SetText, erfordern eine Möglichkeit, einen Bearbeitungskontext zu identifizieren, der über eine schreibgeschützte oder lese-/schreibgeschützte Dokumentsperreverfügt. Eine Dokumentsperre wird über 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 eine Bearbeitungssitzung mit einem bestimmten Kontext und schreibgeschütztem oder Lese-/Schreibzugriff angefordert wird. Wenn die Bearbeitungssitzung gewährt wird, wird der Textdienst mit einem Bearbeitungscookies bereitgestellt, die 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 dem Kontextersteller auch ein Bearbeitungscookies bereit. Dieses Cookie hat schreibgeschützten Zugriff und es gibt keine Möglichkeit, die Zugriffsebene zu ändern. Tatsächlich handelt der TSF-Manager keine Dokumentensperre für dieses Bearbeitungscookies aus. Das Cookie ist intern als schreibgeschützt gekennzeichnet, aber das Dokument ist nicht tatsächlich gesperrt. Wenn der Kontextersteller z. B. ITfContext::GetSelection mit dem von ITfDocumentMgr::CreateContext zurückgegebenen Bearbeitungscookies aufruft, führt dies dazu, dass die ITextStoreACP::GetSelection oder ITextStoreAnchor::GetSelection 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 hat.
Wenn der Kontextersteller ein Bearbeitungscookies mit Lese-/Schreibzugriff erfordert, muss er eine eigene Bearbeitungssitzung einrichten.
Verwandte Themen