Compartir a través de


Servidores: elementos de servidor

Nota:

La biblioteca Microsoft Foundation Classes (MFC) sigue siendo compatible. Sin embargo, ya no estamos agregando características ni actualizando la documentación.

Cuando un contenedor inicia un servidor para que un usuario pueda editar un elemento OLE incrustado o vinculado, la aplicación de servidor crea un "elemento de servidor". El elemento de servidor, que es un objeto de una clase derivada de COleServerItem, proporciona una interfaz entre el documento de servidor y la aplicación contenedora.

La clase COleServerItem define varias funciones miembro reemplazables a las que llama OLE, generalmente en respuesta a las solicitudes del contenedor. Los elementos de servidor pueden representar parte del documento de servidor o del documento completo. Cuando se inserta un elemento OLE en el documento contenedor, el elemento de servidor representa todo el documento de servidor. Cuando el elemento OLE está vinculado, el elemento de servidor puede representar una parte del documento de servidor o todo el documento, dependiendo de si el vínculo está en una parte o en todo.

En el ejemplo HIERSVR , por ejemplo, la clase server-item, CServerItem, tiene un miembro que es un puntero a un objeto de la clase CServerNode. El CServerNode objeto es un nodo del documento de la aplicación HIERSVR, que es un árbol. Cuando el CServerNode objeto es el nodo raíz, el CServerItem objeto representa todo el documento. Cuando el CServerNode objeto es un nodo secundario, el CServerItem objeto representa una parte del documento. Consulte el ejemplo OLE de MFC HIERSVR para obtener un ejemplo de esta interacción.

Implementación de elementos de servidor

Si usa el asistente para aplicaciones para generar código de inicio para la aplicación, todo lo que tiene que hacer para incluir elementos de servidor en el código de inicio es elegir una de las opciones de servidor de la página Opciones OLE. Si va a agregar elementos de servidor a una aplicación existente, realice los pasos siguientes:

Para implementar un elemento de servidor

  1. Derive una clase de COleServerItem.

  2. En la clase derivada, invalide la función miembro OnDraw.

    El marco llama OnDraw a para representar el elemento OLE en un metarchivo. La aplicación contenedora usa este metarchivo para representar el elemento. La clase de vista de su aplicación también tiene una OnDraw función miembro, que se usa para renderizar el elemento cuando la aplicación de servidor está activa.

  3. Implemente una invalidación de OnGetEmbeddedItem para la clase de documento de servidor. Para obtener más información, consulte el artículo Servidores: Implementación de documentos de servidor y el ejemplo OLE de MFC HIERSVR.

  4. Implemente la función miembro de la clase de elemento de servidor OnGetExtent. El marco llama a esta función para recuperar el tamaño del elemento. La implementación predeterminada no hace nada.

Sugerencia para la arquitectura de Server-Item

Como se indicó en Implementación de elementos de servidor, las aplicaciones de servidor deben poder representar elementos tanto en la vista del servidor como en un metarchivo usado por la aplicación contenedora. En la arquitectura de aplicaciones de la biblioteca MFC, la función de miembro OnDraw de la clase de vista representa el elemento cuando se está editando (consulte CView::OnDraw en la Referencia de la biblioteca de clases). El elemento del servidor OnDraw renderiza el elemento en un metarchivo en todos los demás casos (vea COleServerItem::OnDraw).

Puede evitar la duplicación de código escribiendo funciones auxiliares en la clase documento del servidor y llamándolas desde las funciones de las clases de vista y de elemento del servidor. El ejemplo OLE de MFC HIERSVR usa esta estrategia: ambas funciones CServerView::OnDraw y CServerItem::OnDraw llaman a CServerDoc::DrawTree para representar el elemento.

La vista y el elemento tienen funciones de miembro OnDraw porque se dibujan en condiciones diferentes. La vista debe tener en cuenta factores como el zoom, el tamaño y la extensión de la selección, el recorte y los elementos de la interfaz de usuario, como las barras de desplazamiento. El elemento de servidor, por otro lado, siempre dibuja todo el objeto OLE.

Para obtener más información, vea CView::OnDraw, COleServerItem, COleServerItem::OnDraw y COleServerDoc::OnGetEmbeddedItem en la Referencia de la biblioteca de clases.

Consulte también

Servidores