Compartir a través de


Métodos IPaperSink

COPaper expone la interfaz IConnectionPointContainer para que los clientes puedan conectarse a COPaper para recibir notificaciones de eventos especificados que se producen en COPaper. Al exponer esta interfaz, COPaper se convierte en un objeto conectable. Un cliente puede llamar a QueryInterface para esta interfaz y usarlo para obtener los puntos de conexión del objeto. La participación del cliente en este esquema se trata en el ejemplo stoclien asociado.

Básicamente, el cliente implementa lo que se denomina receptor en forma de objeto receptor con una interfaz de receptor. La interfaz del receptor recibe llamadas de notificación de eventos salientes de COPaper después de que el receptor esté conectado correctamente por el cliente a una instancia de COPaper. El cliente realiza la conexión mediante un objeto de punto de conexión administrado por COPaper. Puede haber numerosos puntos de conexión en un único objeto COM conectable. En el ejemplo StoServe , COPaper solo tiene un punto de conexión, que controla los eventos de papel de dibujo.

Cualquier número de clientes puede conectarse a un único punto de conexión. El punto de conexión CONNPOINT_PAPERSINK en COPaper mantiene un grupo de conexiones que pueden crecer dinámicamente en tiempo de ejecución. Los detalles completos sobre la compatibilidad con objetos conectables de COPaper se codifican en archivos CONNECT. H y CONNECT. CPP y no estarán cubiertos aquí. La construcción es muy similar a lo que se estudió en el ejemplo de código CONSERVE.

El cliente StoClien implementa los objetos receptores adecuados para los puntos de conexión que espera encontrar en COPaper. Desde el contexto de COPaper, el objeto receptor importante que StoClien implementa expone la interfaz IPaperSink . Esta es la interfaz saliente utilizada por COPaper para notificar a StoClien de varios eventos en COPaper.

Este es un resumen de los métodos de IPaperSink de IPAPER. H en el directorio del mismo nivel \INC.

Método Descripción
Bloqueado Un cliente ha tomado el control y ha bloqueado el papel.
Desbloqueado Un cliente ha renunciado al control del papel.
Cargado Un cliente ha cargado contenido de papel desde su propio archivo compuesto.
Guardado Un cliente ha guardado contenido de papel en su propio archivo compuesto.
InkStart Un cliente inició una secuencia de dibujo de tinta de color en el papel.
InkDraw Un cliente coloca puntos de datos de entrada de lápiz en la superficie del papel.
InkStop Un cliente ha detenido su secuencia de dibujo de tinta en el papel.
Borrado Un cliente ha borrado todos los datos de entrada de lápiz del papel.
Redimensionada Un cliente ha cambiado el tamaño del papel.

 

Estos métodos son en gran medida autoexplicativos. Aunque el receptor debe implementar todos estos métodos de alguna manera, muchos se implementan como códigos auxiliares y no se usan en los ejemplos StoServe/StoClien .

Un método importante que se usa en estos ejemplos es el método Loaded. Cuando el cliente le indica a COPaper que cargue un nuevo dibujo del archivo, necesita una manera de notificar al cliente cuándo se cargan los nuevos datos. Para ello, COPaper llama a IPaperSink::Loaded en el receptor del cliente. A continuación, el cliente puede llamar a IPaper::Redraw para solicitar que COPaper reproduzca los nuevos datos al cliente. Volver a dibujar hace que se vuelva a dibujar el dibujo cargado en la pantalla del cliente. Cuando se completa la carga, el dibujo recién cargado se muestra automáticamente en la ventana proporcionada por el cliente.

Consulte IPaper::Redraw para obtener información completa sobre la conectividad de este método IPaper con IPaperSink.

Los métodos IPaperSinkInkStart, InkDraw y InkStop se usan para enviar paquetes de datos de entrada de lápiz individuales al cliente. En la recepción, el cliente los pinta de la misma manera que cuando originalmente los envió a COPaper. La lógica anterior es lo suficientemente general como para permitir que varios clientes que escuchen en el mismo punto de conexión CONNPOINT_PAPERSINK. Si estos clientes comparten una instancia común de COPaper, todos podrían mostrar el mismo dibujo conectándose a este punto de conexión.