Eingebettete Objekte (Text Services Framework)
Text Services Framework ermöglicht es einem Textdienst, Objekte in einen Anwendungstextstream einzubetten. Eingebettete Objekte werden mithilfe des Werts TS_CHAR_EMBEDDED in den Textstream eingefügt. Dieser Wert wird mithilfe der hexadezimalen Schreibweise in das Unicode-Objektersetzungszeichen U+fffc aufgelöst. Die folgende Abbildung zeigt beispielsweise das Rendering eines eingebetteten Objekts, das den japanischen Ideographen hi darstellt, in Kombination mit der Sequenz von Unicode-Zeichen, die die englische Übersetzung von "Sun" darstellen.
Die obere Zeile der Abbildung enthält den übersetzten Text, bestehend aus dem Wort "Sun" gefolgt von dem japanischen Zeichen für sonne, hi. Die mittlere Zeile der Abbildung zeigt das Unicode-Zeichen. Im Fall von U+fffc ist dies das Objektersetzungszeichen. Die untere Zeile der Abbildung zeigt den Hexadezimalwert jedes Zeichens.
Unterstützung eingebetteter Objekte in einer Anwendung
Der TSF-Manager fügt ein eingebettetes Objekt in den Textstream ein, indem er ITextStoreACP::InsertEmbedded für eine ACP-basierte Anwendung oder ITextStoreAnchor::InsertEmbedded für eine ankerbasierte Anwendung aufruft. Wenn ein eingebettetes Objekt eingefügt wird, sollte die Anwendung den TS_CHAR_EMBEDDED Wert an der Zeichenposition (oder Ankerposition) platzieren, an der das Objekt eingebettet ist, und das dem eingebetteten Objekt zugeordnete IDataObject speichern. Wenn ITextStoreACP::GetText oder ITextStoreAnchor::GetText aufgerufen wird und ein eingebettetes Objekt im abgerufenen Text enthalten ist, gibt der TS_CHAR_EMBEDDED Wert das Vorhandensein und die Position des eingebetteten Objekts an. Um das eingebettete Objekt abzurufen, rufen Sie ITextStoreACP::GetEmbedded mit der Zeichenposition des eingebetteten Objekts oder ITextStoreAnchor::GetEmbedded mit der Ankerposition des eingebetteten Objekts auf.
Normalerweise erkennt die Anwendung den eingebetteten Objektinhalt nicht. Die Anwendung kann versuchen, Anzeigeinformationen aus dem Objekt selbst abzurufen. Wenn das eingebettete Objekt Daten in einem Format bereitstellen kann, das die Anwendung erkennt, z. B. CF_UNICODETEXT oder CF_BITMAP, kann die Anwendung vom Objekt bereitgestellte Grafikinformationen anzeigen.
Einfügen eingebetteter Objekte
Ein Textdienst fügt ein eingebettetes Objekt in einen Kontext ein, indem er ITfRange::InsertEmbedded oder ITfInsertAtSelection::InsertEmbeddedAtSelection aufruft. Der Textdienst muss das eingebettete IDataObject bereitstellen.