Contexten bewerken
Toepassingen
Als u een bewerkingscontext wilt maken, roept een toepassing ITfDocumentMgr::CreateContextaan.
Text Services
Een tekstservice maakt vaak gebruik van de huidige actieve bewerkingscontext. De huidige actieve bewerkingscontext is de bewerkingscontext boven aan de stack van de actieve documentbeheer. Als u de huidige actieve context wilt verkrijgen, roept een tekstservice aan ITfThreadMgr::GetFocus om de actieve documentbeheerder te verkrijgen en roept u vervolgens ITfDocumentMgr::GetTop aan om de bewerkingscontext boven aan de stack te verkrijgen.
In sommige gevallen vereist een tekstservice een eigen bewerkingscontext. Een tekstservice roept ITfDocumentMgr::CreateContextom een bewerkingscontext te maken.
Cookies bewerken
Veel methoden, zoals ITfRange::SetText, vereisen een manier om een bewerkingscontext te identificeren met een alleen-lezen of lezen/schrijven documentvergrendeling. Een documentvergrendeling wordt verkregen via een onderhandeling tussen de TSF-manager en de toepassing. Een tekstservice kan deze onderhandeling niet rechtstreeks uitvoeren. Een tekstservice kan alleen een vergrendeling verkrijgen door een bewerkingssessie aan te vragen met een specifieke context en alleen-lezen of lees-/schrijftoegang. Wanneer de bewerkingssessie wordt verleend, wordt de tekstservice geleverd met een cookie bewerken die de bewerkingscontext met de aangevraagde toegang identificeert. Deze cookie wordt vervolgens doorgegeven aan de methode om de bewerkingscontext met de juiste toegang te identificeren.
ITfDocumentMgr::CreateContext levert ook een bewerkingscookor aan de maker van de context. Deze cookie heeft alleen-lezentoegang en er is geen manier om het toegangsniveau te wijzigen. In werkelijkheid onderhandelt de TSF-manager niet over een documentvergrendeling voor deze cookie voor bewerken. De cookie wordt intern gemarkeerd als alleen-lezen, maar het document is niet daadwerkelijk vergrendeld. Als de maker van de context bijvoorbeeld ITfContext::GetSelection aanroept met de bewerkingscookie die wordt geretourneerd door ITfDocumentMgr::CreateContext, resulteert dit in de ITextStoreACP::GetSelection of ITextStoreAnchor::GetSelection wordt aangeroepen. Voordat de selectie wordt verkregen, bepaalt de toepassing of er een documentvergrendeling bestaat. Omdat er geen vergrendeling bestaat, mislukt de toepassing met TS_E_NOLOCK. Als een toepassing een methode aanroept met deze cookie die resulteert in een van de aangeroepen tekstopslagmethoden van de toepassing, moet deze intern worden verwerkt omdat de toepassing geen documentvergrendeling heeft.
Als de maker van de context een bewerkingscooky met lees-/schrijftoegang vereist, moet deze een eigen bewerkingssessie tot stand brengen.
Verwante onderwerpen