Modifier les contextes
Applications
Pour créer un contexte de modification, une application appelle ITfDocumentMgr ::CreateContext.
Services de texte
Un service de texte utilise souvent le contexte d’édition actif. Le contexte d’édition actif est le contexte de modification en haut de la pile du gestionnaire de documents actif. Pour obtenir le contexte actif, un service de texte appelle ITfThreadMgr ::GetFocus pour obtenir le gestionnaire de documents actif, puis appelle ITfDocumentMgr ::GetTop pour obtenir le contexte de modification en haut de la pile.
Dans certains cas, un service de texte nécessite son propre contexte de modification. Pour créer un contexte de modification, un service de texte appelle ITfDocumentMgr ::CreateContext.
Modifier les cookies
De nombreuses méthodes, telles que ITfRange ::SetText, nécessitent un moyen d’identifier un contexte de modification qui a un verrou de document en lecture seule ou en lecture/écriture verrou de document. Un verrou de document est obtenu par le biais d’une négociation entre le gestionnaire TSF et l’application. Un service de texte ne peut pas effectuer cette négociation directement. Un service de texte peut uniquement obtenir un verrou en demandant une modifier la session avec un contexte spécifique et un accès en lecture seule ou en lecture/écriture. Lorsque la session d’édition est accordée, le service de texte est fourni avec un cookie de modification qui identifie le contexte de modification avec l’accès demandé. Ce cookie est ensuite transmis à la méthode pour identifier le contexte de modification avec l’accès approprié.
ITfDocumentMgr ::CreateContext fournit également un cookie de modification au créateur de contexte. Ce cookie dispose d’un accès en lecture seule et il n’existe aucun moyen de modifier le niveau d’accès. En vérité, le gestionnaire TSF ne négocie pas de verrou de document pour ce cookie d’édition. Le cookie est marqué en interne en lecture seule, mais le document n’est pas réellement verrouillé. Par exemple, si le créateur de contexte appelle ITfContext ::GetSelection avec le cookie de modification retourné par ITfDocumentMgr ::CreateContext , cela entraîne l’appel du ITextStoreACP ::GetSelection ou ITextStoreAnchor ::GetSelection appelé. Avant d’obtenir la sélection, l’application détermine si un verrou de document existe. Comme aucun verrou n’existe, l’application échoue avec TS_E_NOLOCK. Autrement dit, si une application appelle une méthode avec ce cookie qui entraîne l’appel de l’une des méthodes de magasin de texte de l’application, elle doit gérer ce cas en interne, car l’application n’aura pas réellement de verrou de document.
Si le créateur de contexte requiert un cookie de modification avec un accès en lecture/écriture, il doit établir sa propre session de modification.
Rubriques connexes