Modifier les contextes

Applications

Pour créer un contexte d’édition, une application appelle ITfDocumentMgr :: CreateContext.

Services de texte

Un service de texte utilise souvent le contexte d’édition actuellement actif. Le contexte d’édition actuellement actif est le contexte d’édition en haut de la pile du gestionnaire de documents actifs. Pour obtenir le contexte actuellement actif, un service de texte appelle ITfThreadMgr :: getFocus pour obtenir le gestionnaire de documents actifs, puis appelle ITfDocumentMgr :: GetTop pour obtenir le contexte d’édition en haut de la pile.

Dans certains cas, un service de texte requiert son propre contexte d’édition. Pour créer un contexte d’édition, un service de texte appelle ITfDocumentMgr :: CreateContext.

Modifier les cookies

De nombreuses méthodes, telles que ITfRange :: SetText, requièrent un moyen d’identifier un contexte d’édition qui a un verrou de documenten lecture seule ou en lecture/écriture. Un verrou de document est obtenu via 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 session d’édition 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 d’édition avec l’accès demandé. Ce cookie est ensuite transmis à la méthode pour identifier le contexte d’édition 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 de modification. 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 Edit retourné par ITfDocumentMgr :: CreateContext , l’appel de ITextStoreACP :: GetSelection ou ITextStoreAnchor :: GetSelection est alors effectué. Avant d’obtenir la sélection, l’application détermine s’il existe un verrou de document. Étant donné qu’il n’existe aucun verrou, 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’a pas de verrou de document.

Si le créateur de contexte requiert un cookie de modification avec accès en lecture/écriture, il doit établir sa propre session d’édition.

ITfContext

ITfDocumentMgr :: CreateContext

ITfThreadMgr :: GetFocus

ITfDocumentMgr :: GetTop

ITfRange :: SetText

Verrous de document

Sessions de modification

ITfContext :: GetSelection

ITextStoreACP :: GetSelection

ITextStoreAnchor :: GetSelection