Edytowanie kontekstów
Aplikacji
Aby utworzyć kontekst edycji, aplikacja wywołuje ITfDocumentMgr::CreateContext.
Usługi tekstowe
Usługa tekstowa często używa obecnie aktywnego kontekstu edycji. Aktualnie aktywny kontekst edycji to kontekst edycji w górnej części stosu aktywnego menedżera dokumentów. Aby uzyskać aktualnie aktywny kontekst, usługa tekstowa wywołuje ITfThreadMgr::GetFocus w celu uzyskania aktywnego menedżera dokumentów, a następnie wywołuje ITfDocumentMgr::GetTop w celu uzyskania kontekstu edycji w górnej części stosu.
W niektórych przypadkach usługa tekstowa wymaga własnego kontekstu edycji. Aby utworzyć kontekst edycji, usługa tekstowa wywołuje ITfDocumentMgr::CreateContext.
Edytowanie plików cookie
Wiele metod, takich jak ITfRange::SetText, wymaga sposobu identyfikowania kontekstu edycji z blokadą dokumentu tylko do odczytu lub odczytu/zapisu . Blokada dokumentu jest uzyskiwana przez negocjacje między menedżerem TSF a aplikacją. Usługa tekstowa nie może wykonać tej negocjacji bezpośrednio. Usługa tekstowa może uzyskać blokadę tylko przez żądanie edycji sesji z określonym kontekstem i dostępem tylko do odczytu lub odczytu/zapisu. Po udzieleniu sesji edycji usługa tekstowa jest dostarczana z edycji pliku cookie, który identyfikuje kontekst edycji z żądanym dostępem. Ten plik cookie jest następnie przekazywany do metody w celu zidentyfikowania kontekstu edycji z odpowiednim dostępem.
ITfDocumentMgr::CreateContext również dostarcza plik cookie edycji do twórcy kontekstu. Ten plik cookie ma dostęp tylko do odczytu i nie ma możliwości modyfikowania poziomu dostępu. W rzeczywistości menedżer TSF nie negocjuje blokady dokumentu dla tego pliku cookie edycji. Plik cookie jest wewnętrznie oznaczony jako tylko do odczytu, ale dokument nie jest w rzeczywistości zablokowany. Jeśli na przykład twórca kontekstu wywołuje ITfContext::GetSelection z plikiem cookie edycji zwróconym przez ITfDocumentMgr::CreateContext , spowoduje to wywołanie ITextStoreACP::GetSelection::GetSelection lub ITextStoreAnchor::GetSelection. Przed uzyskaniem zaznaczenia aplikacja określi, czy istnieje blokada dokumentu. Ponieważ nie istnieje blokada, aplikacja zakończy się niepowodzeniem z TS_E_NOLOCK. Oznacza to, że jeśli aplikacja wywołuje metodę z tym plikiem cookie, która powoduje wywołanie jednej z metod magazynu tekstu aplikacji, musi obsłużyć ten przypadek wewnętrznie, ponieważ aplikacja nie będzie mieć blokady dokumentu.
Jeśli twórca kontekstu wymaga edytowanego pliku cookie z dostępem do odczytu/zapisu, musi ustanowić własną sesję edycji.
Tematy pokrewne