Objetos incrustados (Marco de servicios de texto)
Text Services Framework permite que un servicio de texto inserte objetos en un flujo de texto de la aplicación. Los objetos incrustados se insertan en el flujo de texto mediante el valor TS_CHAR_EMBEDDED. Este valor se resuelve en el carácter de reemplazo de objeto Unicode U+fffc, con notación hexadecimal. Por ejemplo, en la ilustración siguiente se muestra la representación de un objeto incrustado que representa el ideógrafo japonés hi, en combinación con la secuencia de caracteres Unicode que representan la traducción en inglés de "Sun".
La fila superior de la figura contiene el texto traducido, que consta de la palabra "Sol" seguido del carácter japonés para el sol, hola. La fila central de la figura muestra el carácter Unicode. En el caso de U+fffc, este es el carácter de reemplazo de objeto. La fila inferior de la ilustración muestra el valor hexadecimal de cada carácter.
Admitir objetos incrustados en una aplicación
El administrador de TSF inserta un objeto incrustado en el flujo de texto llamando a ITextStoreACP::InsertEmbedded para una aplicación basada en ACP o ITextStoreAnchor::InsertEmbedded para una aplicación basada en anclajes. Cuando se inserta un objeto incrustado, la aplicación debe colocar el valor de TS_CHAR_EMBEDDED en la posición del carácter (o la ubicación del delimitador) donde está incrustado el objeto y almacenar el objeto IDataObject asociado al objeto incrustado. Cuando se llama a ITextStoreACP::GetText o ITextStoreAnchor::GetText y se incluye un objeto incrustado dentro del texto obtenido, el valor de TS_CHAR_EMBEDDED indica la presencia y la ubicación del objeto incrustado. Para obtener el objeto incrustado, llame a ITextStoreACP::GetEmbedded con la posición de carácter del objeto incrustado o ITextStoreAnchor::GetEmbedded con la ubicación de anclaje del objeto incrustado.
Normalmente, la aplicación no reconoce el contenido del objeto incrustado. La aplicación puede intentar obtener información para mostrar del propio objeto. Si el objeto incrustado puede proporcionar datos en un formato que reconoce la aplicación, como CF_UNICODETEXT o CF_BITMAP, la aplicación puede mostrar información gráfica proporcionada por el objeto.
Insertar objetos incrustados
Un servicio de texto inserta un objeto incrustado en un contexto llamando a ITfRange::InsertEmbedded o ITfInsertAtSelection::InsertEmbeddedAtSelection. El servicio de texto debe proporcionar el IDataObject incrustado.