Objets incorporés (Infrastructure des services de texte)
Text Services Framework permet à un service de texte d’incorporer des objets dans un flux de texte d’application. Les objets incorporés sont insérés dans le flux de texte à l’aide de la valeur TS_CHAR_EMBEDDED. Cette valeur est résolue en caractère de remplacement d’objet Unicode U+fffc, à l’aide de la notation hexadécimale. Par exemple, l’illustration suivante montre le rendu d’un objet incorporé qui représente l’idéogramme japonais hi, en combinaison avec la séquence de caractères Unicode qui représentent la traduction anglaise de « Sun ».
La ligne supérieure de la figure contient le texte traduit, composé du mot « Soleil » suivi du caractère japonais pour sun, hi. La ligne centrale de la figure montre le caractère Unicode. Dans le cas de U+fffc, il s’agit du caractère de remplacement de l’objet. La ligne inférieure de la figure montre la valeur hexadécimale de chaque caractère.
Prise en charge des objets incorporés dans une application
Le gestionnaire TSF insère un objet incorporé dans le flux de texte en appelant ITextStoreACP::InsertEmbedded pour une application basée sur ACP, ou ITextStoreAnchor::InsertEmbedded pour une application basée sur des ancres. Lorsqu’un objet incorporé est inséré, l’application doit placer la valeur TS_CHAR_EMBEDDED à la position du caractère (ou emplacement d’ancrage) où l’objet est incorporé et stocker l’IDataObject associé à l’objet incorporé. Lorsque ITextStoreACP::GetText ou ITextStoreAnchor::GetText est appelé et qu’un objet incorporé est contenu dans le texte obtenu, la valeur TS_CHAR_EMBEDDED indique la présence et l’emplacement de l’objet incorporé. Pour obtenir l’objet incorporé, appelez ITextStoreACP::GetEmbedded avec la position du caractère de l’objet incorporé, ou ITextStoreAnchor::GetEmbedded avec l’emplacement d’ancrage de l’objet incorporé.
L’application ne reconnaît normalement pas le contenu de l’objet incorporé. L’application peut tenter d’obtenir des informations d’affichage à partir de l’objet lui-même. Si l’objet incorporé peut fournir des données dans un format que l’application reconnaît, tel que CF_UNICODETEXT ou CF_BITMAP, l’application peut afficher des informations graphiques fournies par l’objet.
Insertion d’objets incorporés
Un service de texte insère un objet incorporé dans un contexte en appelant ITfRange::InsertEmbedded ou ITfInsertAtSelection::InsertEmbeddedAtSelection. Le service de texte doit fournir l’objet IDataObject incorporé.