objetos sInk y tInk
Para ayudar a admitir la entrada de lápiz en las aplicaciones, hay dos objetos, ambos que se pueden incrustar y son compatibles con cualquier contenedor OLE. Se generan llamando al método Ink.ClipboardCopy (Rectangle, InkClipboardFormats, InkClipboardModes) o al método Ink.ClipboardCopy (Strokes, InkClipboardFormats, InkClipboardModes) y son:
- Objeto de entrada de lápiz de texto (tInk). Se trata de un objeto OLE que representa la entrada de lápiz que se espera que formen palabras. Un objeto tInk permite convertir la entrada manuscrita en texto, ya sea como el texto devuelto por un reconocedor o la elección tomada de una lista de alternativas de reconocimiento. El color y el tamaño de la entrada de lápiz se pueden establecer mediante programación y se pueden basar en los atributos del texto alrededor del objeto. El objeto tInk está diseñado para contener una sola palabra. El objeto tInk es un objeto pequeño y ligero que puede realizar operaciones sencillas como la representación (dado un identificador a un contexto de dispositivo (HDC) y un RECT) y conservarse a sí mismo (dado un flujo). El uso de un objeto tInk permite una experiencia de usuario perfecta al trabajar en una aplicación que usa la entrada de escritura a mano y texto.
- Objeto de lápiz de croquis (sInk). Se trata de un objeto OLE que representa la entrada de lápiz que no se espera que formen palabras. Un objeto sInk se interpreta como un dibujo. Un objeto sInk también es útil para representar varias palabras.
Estos objetos se pueden usar para la interoperabilidad entre aplicaciones, ya sea colocándolos en la ranura de objetos OLE en el Portapapeles o insertandolos en formato de texto enriquecido (RTF).
Puede usar objetos tInk y sInk de las siguientes maneras:
- Los objetos tInk y sInk se admiten en Microsoft Word 2002. Los usuarios pueden insertar entrada de lápiz en un documento de Word mediante los paneles de entrada de texto de escritura y dibujo proporcionados en Word 2002. Esta entrada de lápiz se inserta en el archivo Word como un objeto OLE con el CLSID del objeto sInk o tInk.
- El control Tablet PC InkEdit utiliza el objeto tInk. El control InkEdit es una subclase del control RichTextBox estándar. La entrada de lápiz se inserta en la secuencia RTF del control InkEdit como un objeto tInk.
- Cuando una aplicación mueve un objeto Ink seleccionado al Portapapeles, la ranura del Portapapeles del objeto OLE contiene un objeto OLE tInk o sInk.
Por ejemplo, la aplicación puede reconocer la escritura a mano y marcar cualquier objeto Ink como un objeto tInk. A continuación, si selecciona una palabra en la entrada de lápiz y la copia y la pega en Word, se muestran alternativas para esa palabra en Word 2002.
Nota
El Portapapeles de la Plataforma tablet pc selecciona automáticamente la marca metarchivo mejorado (EMF) cuando coloca un objeto sInk o tInk en el Portapapeles como un objeto OLE. El propio objeto se almacena en el Portapapeles en las ranuras de descriptor de objeto y origen de inserción.
Como otro ejemplo, mediante el objeto sInk, puede dibujar un boceto de lápiz en una aplicación, copiar y pegar el boceto en Word 2002 y, a continuación, editar el dibujo mediante el Panel de entrada del PC tableta en Word.
Para contener correctamente objetos tInk, una aplicación debe implementar la compatibilidad con contenedores OLE para objetos incrustados. A continuación, para que el contenedor sea totalmente compatible con tInk, debe instituir:
- Modificaciones en el código para Buscar y reemplazar. En lugar de omitir objetos incrustados en la búsqueda, estos objetos deben interrogarse para el tipo. Si son un objeto tInk, deben crearse instancias y consultarse para su texto correspondiente.
- Modificaciones en el comportamiento de selección. La selección de objetos tInk nunca debe aparecer con controladores de tamaño. Deben seleccionarse de la misma manera que el texto seleccionado en el documento. El código de selección de los objetos debe detectar si el tipo es tInk y mostrar la selección correctamente.
- Uso de propiedades ambientales. Las propiedades ambientales, como el tamaño de fuente, el color y el formato de negrita, deben transmitirse al objeto tInk. La aplicación de estas propiedades cambia el ancho de la entrada manuscrita, por lo que se requiere una actualización de tamaño mediante una llamada al método GetInkExtent o al método IOleObject::GetExtent .
- Invalide el procesamiento predeterminado del método IOleObject::D oVerb . Esto permite que la conversión al texto pase un lote de objetos tInk al reconocedor, lo que puede dividir las palabras en segmentos de reconocimiento.
Para obtener más información sobre cómo dividir palabras en segmentos de reconocimiento, vea Segmentos de reconocimiento.