Eingebettete Objekte (Text Services Framework)
Text Services Framework ermöglicht einem Textdienst das Einbetten von Objekten in einen Anwendungstextstream. Eingebettete Objekte werden mithilfe des Werts TS_CHAR_EMBEDDEDin den Textstream eingefügt. Dieser Wert wird mit hexadezimaler Schreibweise in das Unicode-Objektersetzungszeichen U+fffc aufgelöst. Die folgende Abbildung zeigt beispielsweise das Rendern eines eingebetteten Objekts, das den japanischen Ideographen hidarstellt, in Kombination mit der Sequenz von Unicode-Zeichen, die die englische Übersetzung von "Sun" darstellen.
Die oberste Zeile der Abbildung enthält den übersetzten Text, bestehend aus dem Wort "Sun" gefolgt vom japanischen Zeichen für Sonne, hi. Die mittlere Zeile der Abbildung zeigt das Unicode-Zeichen. Bei U+fffc ist dies das Objektersetzungszeichen. Die untere Zeile der Abbildung zeigt den Hexadezimalwert jedes Zeichens.
Unterstützen eingebetteter Objekte in einer Anwendung
Der TSF-Manager fügt ein eingebettetes Objekt in den Textstream ein, indem ITextStoreACP::InsertEmbedded für eine ACP-basierte Anwendung oder ITextStoreAnchor::InsertEmbedded für eine ankerbasierte Anwendung aufgerufen wird. 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. Rufen Sie zum Abrufen des eingebetteten Objekts ITextStoreACP::GetEmbedded mit der Zeichenposition des eingebetteten Objekts oder ITextStoreAnchor::GetEmbedded mit der Verankerungsposition des eingebetteten Objekts auf.
Die Anwendung erkennt den inhalt des eingebetteten Objekts normalerweise nicht. Die Anwendung kann versuchen, Anzeigeinformationen aus dem Objekt selbst abzurufen. Wenn das eingebettete Objekt Daten in einem Format bereitstellen kann, das von der Anwendung erkannt wird, 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 ITfRange::InsertEmbedded oder ITfInsertAtSelection::InsertEmbeddedAtSelectionaufgerufen wird. Der Textdienst muss das eingebettete IDataObject bereitstellen.