Compartir vía


COleServerDoc (clase)

La clase base para los documentos de servidor OLE.

Sintaxis

class AFX_NOVTABLE COleServerDoc : public COleLinkingDoc

Miembros

Constructores públicos

Nombre Descripción
COleServerDoc::COleServerDoc Construye un objeto COleServerDoc.

Métodos públicos

Nombre Descripción
COleServerDoc::ActivateDocObject Activa el documento DocObject asociado.
COleServerDoc::ActivateInPlace Activa el documento para la edición local.
COleServerDoc::DeactivateAndUndo Desactiva la interfaz de usuario del servidor.
COleServerDoc::DiscardUndoState Descarta la información del estado deshacer.
COleServerDoc::GetClientSite Recupera un puntero a la interfaz IOleClientSite subyacente.
COleServerDoc::GetEmbeddedItem Devuelve un puntero a un elemento que representa todo el documento.
COleServerDoc::GetItemClipRect Devuelve el rectángulo de recorte actual para la edición en contexto.
COleServerDoc::GetItemPosition Devuelve el rectángulo de posición actual, en relación con el área cliente de la aplicación contenedora, para la edición en contexto.
COleServerDoc::GetZoomFactor Devuelve el factor de zoom en píxeles.
COleServerDoc::IsDocObject Determina si el documento es un DocObject.
COleServerDoc::IsEmbedded Indica si el documento está incrustado en un documento contenedor o si se ejecuta de forma independiente.
COleServerDoc::IsInPlaceActive Devuelve TRUE si el elemento está activado actualmente en su lugar.
COleServerDoc::NotifyChanged Notifica a los contenedores que el usuario ha cambiado el documento.
COleServerDoc::NotifyClosed Notifica a los contenedores que el usuario ha cerrado el documento.
COleServerDoc::NotifyRename Notifica a los contenedores que el usuario ha cambiado el nombre del documento.
COleServerDoc::NotifySaved Notifica a los contenedores que el usuario ha guardado el documento.
COleServerDoc::OnDeactivate El marco llama a esta función cuando el usuario desactiva un elemento que estaba activo en el entorno local.
COleServerDoc::OnDeactivateUI El marco la llama para destruir controles y otros elementos de la interfaz de usuario creados para la activación local.
COleServerDoc::OnDocWindowActivate El marco la llama cuando la ventana del marco contenedor del documento está activado o desactivado.
COleServerDoc::OnResizeBorder El marco la llama cuando se cambia el tamaño de la ventana de marco o de documento de la aplicación contenedora.
COleServerDoc::OnShowControlBars El marco la llama para mostrar u ocultar barras de control para la edición en contexto.
COleServerDoc::OnUpdateDocument El marco la llama cuando se guarda un documento de servidor que es un elemento incrustado, actualizando la copia del contenedor del elemento.
COleServerDoc::RequestPositionChange Cambia la posición del marco de edición en contexto.
COleServerDoc::SaveEmbedding Indica a la aplicación contenedora que guarde el documento.
COleServerDoc::ScrollContainerBy Desplaza el documento de contenedor.
COleServerDoc::UpdateAllItems Notifica a los contenedores que el usuario ha cambiado el documento.

Métodos protegidos

Nombre Descripción
COleServerDoc::CreateInPlaceFrame El marco la llama para crear una ventana de marco para la edición en contexto.
COleServerDoc::DestroyInPlaceFrame El marco la llama para destruir una ventana de marco para la edición en contexto.
COleServerDoc::GetDocObjectServer Invalida esta función para crear un nuevo objeto CDocObjectServer e indique que este documento es un contenedor DocObject.
COleServerDoc::OnClose El marco la llama cuando un contenedor solicita cerrar el documento.
COleServerDoc::OnExecOleCmd Ejecuta un comando especificado o muestra Ayuda para el comando.
COleServerDoc::OnFrameWindowActivate El marco la llama cuando la ventana del marco contenedor está activado o desactivado.
COleServerDoc::OnGetEmbeddedItem Se llama para obtener un objeto COleServerItem que representa todo el documento; se usa para obtener un elemento incrustado. Se requiere la implementación.
COleServerDoc::OnReactivateAndUndo El marco la llama para deshacer los cambios realizados durante la edición en contexto.
COleServerDoc::OnSetHostNames El marco la llama cuando un contenedor establece el título de la ventana para un objeto incrustado.
COleServerDoc::OnSetItemRects El marco la llama para colocar la ventana de marco de edición en contexto dentro de la ventana de la aplicación contenedora.
COleServerDoc::OnShowDocument El marco la llama para mostrar u ocultar el documento.

Comentarios

Un documento de servidor puede contener objetos COleServerItem, que representan la interfaz del servidor para elementos incrustados o vinculados. Cuando un contenedor inicia una aplicación de servidor para editar un elemento incrustado, el elemento se carga como su propio documento de servidor; el objeto COleServerDoc contiene solo un objeto COleServerItem, que consta de todo el documento. Cuando un contenedor inicia una aplicación de servidor para editar un elemento vinculado, se carga un documento existente desde el disco; Se resalta una parte del contenido del documento para indicar el elemento vinculado.

COleServerDoc Los objetos también pueden contener elementos de la clase COleClientItem. Esto le permite crear aplicaciones de servidor contenedor. El marco de trabajo proporciona funciones para almacenar correctamente los elementos COleClientItem mientras se atiende a los objetos COleServerItem.

Si la aplicación de servidor no admite vínculos, un documento de servidor siempre contendrá un solo elemento de servidor, que representa todo el objeto incrustado como documento. Si la aplicación de servidor admite vínculos, debe crear un elemento de servidor cada vez que se copie una selección en el Portapapeles.

Para usar COleServerDoc, derive una clase de ella e implemente la función miembro OnGetEmbeddedItem, que permite al servidor admitir elementos incrustados. Derive una clase de COleServerItem para implementar los elementos de los documentos y devolver objetos de esa clase de OnGetEmbeddedItem.

Para admitir elementos vinculados, COleServerDoc proporciona la función miembro OnGetLinkedItem. Puede usar la implementación predeterminada o invalidarlo si tiene su propia manera de administrar elementos de documento.

Necesita una clase derivada de COleServerDoc para cada tipo de documento de servidor que admita la aplicación. Por ejemplo, si la aplicación de servidor admite hojas de cálculo y gráficos, necesita dos clases derivadas de COleServerDoc.

Para obtener más información sobre los servidores, consulte el artículo Servidores: Implementar un servidor.

Jerarquía de herencia

CObject

CCmdTarget

CDocument

COleDocument

COleLinkingDoc

COleServerDoc

Requisitos

Encabezado: afxole.h

COleServerDoc::ActivateDocObject

Activa el documento DocObject asociado.

void ActivateDocObject();

Comentarios

De forma predeterminada, COleServerDoc no admite documentos activos (también denominados DocObjects). Para habilitar esta compatibilidad, vea GetDocObjectServer y la clase CDocObjectServer.

COleServerDoc::ActivateInPlace

Activa el elemento para la edición en contexto.

BOOL ActivateInPlace();

Valor devuelto

Distinto de cero si se realiza correctamente; de lo contrario 0, que indica que el elemento está totalmente abierto.

Comentarios

Esta función realiza todas las operaciones necesarias para la activación en contexto. Crea una ventana de marco en contexto, la activa y la ajusta al elemento, configura menús compartidos y otros controles, desplaza el elemento a la vista y establece el foco en la ventana de marco en contexto.

La implementación predeterminada de COleServerItem::OnShow llama a esta función. Llame a esta función si la aplicación admite otro verbo para la activación local (como Play).

COleServerDoc::COleServerDoc

Construye un objeto COleServerDoc sin conectarse a los archivos DLL del sistema OLE.

COleServerDoc();

Comentarios

Debe llamar a COleLinkingDoc::Register para abrir comunicaciones con OLE. Si usa COleTemplateServer en la aplicación, COleLinkingDoc::Register se le llama mediante COleLinkingDocla implementación de OnNewDocument, OnOpenDocumenty OnSaveDocument.

COleServerDoc::CreateInPlaceFrame

El marco llama a esta función para crear una ventana de marco para la edición en contexto.

virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);

Parámetros

pParentWnd
Puntero a la ventana primaria de la aplicación contenedora.

Valor devuelto

Puntero a la ventana de marco local o NULL si no se realiza correctamente.

Comentarios

La implementación predeterminada usa información especificada en la plantilla de documento para crear el marco. La vista usada es la primera vista creada para el documento. Esta vista se desasocia temporalmente del marco original y se adjunta al marco recién creado.

Se trata de una invalidación avanzada.

COleServerDoc::DeactivateAndUndo

Llame a esta función si la aplicación admite Deshacer y el usuario elige Deshacer después de activar un elemento, pero antes de editarlo.

BOOL DeactivateAndUndo();

Valor devuelto

Distinto de cero en caso de éxito; en caso contrario, es 0.

Comentarios

Si la aplicación contenedora se escribe mediante la Biblioteca de Clases de Microsoft Foundation, llamar a esta función hace que se llame a COleClientItem::OnDeactivateAndUndo, que desactiva la interfaz de usuario del servidor.

COleServerDoc::DestroyInPlaceFrame

El marco llama a esta función para destruir una ventana de marco local y devolver la ventana de documento de la aplicación de servidor a su estado antes de la activación local.

virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);

Parámetros

pFrameWnd
Puntero a la ventana de marco en contexto que se va a destruir.

Comentarios

Se trata de una invalidación avanzada.

COleServerDoc::DiscardUndoState

Si el usuario realiza una operación de edición que no se puede deshacer, llame a esta función para forzar a la aplicación contenedora a descartar su información de estado de deshacer.

BOOL DiscardUndoState();

Valor devuelto

Distinto de cero en caso de éxito; en caso contrario, es 0.

Comentarios

Esta función se proporciona para que los servidores que admiten Deshacer puedan liberar recursos que, de lo contrario, se consumirían con información de estado de deshacer que no se puede usar.

COleServerDoc::GetClientSite

Recupera un puntero a la interfaz IOleClientSite subyacente.

LPOLECLIENTSITE GetClientSite() const;

Valor devuelto

Recupera un puntero a la interfaz IOleClientSite subyacente.

COleServerDoc::GetDocObjectServer

Invalide esta función para crear un nuevo elemento CDocObjectServer y devolverle un puntero.

virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);

Parámetros

pDocSite
Puntero a la interfaz IOleDocumentSite que conectará este documento al servidor.

Valor devuelto

Puntero a un CDocObjectServer; NULL si se produjo un error en la operación.

Comentarios

Cuando se activa un servidor DocObject, la devolución de un puntero distinto de NULL muestra que el cliente puede admitir DocObjects. La implementación predeterminada devuelve NULL.

Una implementación típica de un documento que admita DocObjects simplemente asignará un nuevo objeto CDocObjectServer y lo devolverá al autor de la llamada. Por ejemplo:

CDocObjectServer* CMFCOleServerDoc::GetDocObjectServer(LPOLEDOCUMENTSITE pSite)
{
   return new CDocObjectServer(this, pSite);
}

COleServerDoc::GetEmbeddedItem

Llame a esta función para obtener un puntero a un elemento que representa todo el documento.

COleServerItem* GetEmbeddedItem();

Valor devuelto

Puntero a un elemento que representa todo el documento; NULL si se produjo un error en la operación.

Comentarios

Llama a COleServerDoc::OnGetEmbeddedItem, una función virtual sin ninguna implementación predeterminada.

COleServerDoc::GetItemClipRect

Llama a la función miembro GetItemClipRect para obtener las coordenadas del rectángulo de recorte del elemento que se está editando en el entorno local.

void GetItemClipRect(LPRECT lpClipRect) const;

Parámetros

lpClipRect
Puntero a una estructura RECT o un objeto CRect para recibir las coordenadas del rectángulo de recorte del elemento.

Comentarios

Las coordenadas se proporcionan en píxeles en relación con el área cliente de la ventana de la aplicación contenedora.

El dibujo no debe producirse fuera del rectángulo de recorte. Normalmente, el dibujo se restringe automáticamente. Utilice esta función para determinar si el usuario se ha desplazado fuera de la parte visible del documento; Si es así, desplácese el documento contenedor según sea necesario mediante una llamada a ScrollContainerBy.

COleServerDoc::GetItemPosition

Llame a la función miembro GetItemPosition para obtener las coordenadas del elemento que se está editando en su lugar.

void GetItemPosition(LPRECT lpPosRect) const;

Parámetros

lpPosRect
Puntero a una estructura RECT o un objeto CRect para recibir las coordenadas del elemento.

Comentarios

Las coordenadas se proporcionan en píxeles en relación con el área cliente de la ventana de la aplicación contenedora.

La posición del elemento se puede comparar con el rectángulo de recorte actual para determinar la medida en que el elemento está visible (o no visible) en la pantalla.

COleServerDoc::GetZoomFactor

La función miembro GetZoomFactor determina el "factor de zoom" de un elemento que se ha activado para la edición local.

BOOL GetZoomFactor(
    LPSIZE lpSizeNum = NULL,
    LPSIZE lpSizeDenom = NULL,
    LPCRECT lpPosRect = NULL) const;

Parámetros

lpSizeNum
Puntero a un objeto de clase CSize que contendrá el numerador del factor de zoom. Puede ser NULL.

lpSizeDenom
Puntero a un objeto de clase CSize que contendrá el denominador del factor de zoom. Puede ser NULL.

lpPosRect
Puntero a un objeto de clase CRect que describe la nueva posición del elemento. Si este argumento es NULL, la función usa la posición actual del elemento.

Valor devuelto

Distinto de cero si el elemento está activado para la edición en contexto y su factor de zoom es distinto del 100 % (1:1); de lo contrario, 0.

Comentarios

El factor de zoom, en píxeles, es la proporción del tamaño del elemento en su extensión actual. Si la aplicación contenedora no ha establecido la extensión del elemento, se usa su extensión natural (determinada por COleServerItem::OnGetExtent).

La función establece sus dos primeros argumentos en el numerador y el denominador del "factor de zoom" del elemento. Si el elemento no se está editando en contexto, la función establece estos argumentos en un valor predeterminado del 100 % (o 1:1) y devuelve cero. Para obtener más información, vea Nota técnica 40, MFC/OLE In-Place cambio de tamaño y zoom.

COleServerDoc::IsDocObject

Determina si el documento es un DocObject.

BOOL IsDocObject() const;

Valor devuelto

TRUE si el documento es un DocObject; en caso contrario, FALSE.

COleServerDoc::IsEmbedded

Llame a la función miembro IsEmbedded para determinar si el documento representa un objeto incrustado en un contenedor.

BOOL IsEmbedded() const;

Valor devuelto

Distinto de cero si el objeto COleServerDoc es un documento que representa un objeto incrustado en un contenedor; en caso contrario, 0.

Comentarios

Un documento cargado desde un archivo no está incrustado, aunque puede ser manipulado por una aplicación contenedora como vínculo. Un documento incrustado en un documento contenedor se considera incrustado.

COleServerDoc::IsInPlaceActive

Llame a la función miembro IsInPlaceActive para determinar si el elemento está actualmente en estado activo en contexto.

BOOL IsInPlaceActive() const;

Valor devuelto

Distinto de cero si el objeto COleServerDoc está activo en su lugar; en caso contrario, 0.

COleServerDoc::NotifyChanged

Llame a esta función para notificar a todos los elementos vinculados conectados al documento que el documento ha cambiado.

void NotifyChanged();

Comentarios

Normalmente, se llama a esta función después de que el usuario cambie algún atributo global, como las dimensiones del documento del servidor. Si un elemento de OLE está vinculado al documento con un vínculo automático, el elemento se actualiza para reflejar los cambios. En las aplicaciones de contenedor escritas con la Biblioteca de clases de Microsoft Foundation, se llama a la función miembro OnChange de COleClientItem.

Nota:

Esta función se incluye para la compatibilidad con OLE 1. Las aplicaciones nuevas deben usar UpdateAllItems.

COleServerDoc::NotifyClosed

Llame a esta función para notificar a los contenedores que se han cerrado el documento.

void NotifyClosed();

Comentarios

Cuando el usuario elige el comando Cerrar en el menú Archivo, NotifyClosed lo llama la COleServerDocimplementación de la función miembro OnCloseDocument. En las aplicaciones de contenedor escritas con la Biblioteca de clases de Microsoft Foundation, se llama a la función miembro OnChange de COleClientItem.

COleServerDoc::NotifyRename

Llame a esta función después de que el usuario cambie el nombre del documento del servidor.

void NotifyRename(LPCTSTR lpszNewName);

Parámetros

lpszNewName
Puntero a una cadena que especifica el nuevo nombre del documento de servidor; normalmente es una ruta de acceso completa.

Comentarios

Cuando el usuario elige el comando Guardar como en el menú Archivo, NotifyRename lo llama la implementación COleServerDoc de la función miembro OnSaveDocument. Esta función notifica a los archivos DLL del sistema OLE, que a su vez notifican a los contenedores. En las aplicaciones de contenedor escritas con la Biblioteca de clases de Microsoft Foundation, se llama a la función miembro OnChange de COleClientItem.

COleServerDoc::NotifySaved

Llame a esta función después de que el usuario guarde el documento del servidor.

void NotifySaved();

Comentarios

Cuando el usuario elige el comando Guardar en el menú Archivo, NotifySaved lo llama por ti la implementación COleServerDoc de OnSaveDocument. Esta función notifica a los archivos DLL del sistema OLE, que a su vez notifican a los contenedores. En las aplicaciones de contenedor escritas con la Biblioteca de clases de Microsoft Foundation, se llama a la función miembro OnChange de COleClientItem.

COleServerDoc::OnClose

Lo llama el marco cuando un contenedor solicita que se cierre el documento del servidor.

virtual void OnClose(OLECLOSE dwCloseOption);

Parámetros

dwCloseOption
Un valor de la enumeración de OLECLOSE. Este parámetro puede tener uno de los valores siguientes:

  • OLECLOSE_SAVEIFDIRTY El archivo se guarda si se ha modificado.

  • OLECLOSE_NOSAVE Se cierra el archivo sin guardarse.

  • OLECLOSE_PROMPTSAVE Si se ha modificado el archivo, se le pedirá al usuario que lo guarde.

Comentarios

La implementación predeterminada llama a CDocument::OnCloseDocument.

Para obtener más información y valores adicionales, consulte OLECLOSE en Windows SDK.

COleServerDoc::OnDeactivate

Lo llama el marco cuando el usuario desactiva un elemento incrustado o vinculado que está activo actualmente.

virtual void OnDeactivate();

Comentarios

Esta función restaura la interfaz de usuario de la aplicación contenedora a su estado original y destruye los menús junto con otros controles creados para la activación local.

La información de estado de deshacer debe liberarse incondicionalmente en este momento.

Para obtener más información, consulte el artículo Activación.

COleServerDoc::OnDeactivateUI

Se llama a esta función cuando el usuario desactiva un elemento que estaba activo en el entorno local.

virtual void OnDeactivateUI(BOOL bUndoable);

Parámetros

bUndoable
Especifica si los cambios de edición se pueden revertir.

Comentarios

Esta función restaura la interfaz de usuario de la aplicación contenedora a su estado original y oculta los menús junto con otros controles creados para la activación local.

El marco siempre establece bUndoable en FALSE. Si el servidor admite deshacer y hay una operación que se puede deshacer, llame a la implementación de clase base con bUndoable establecido en TRUE.

COleServerDoc::OnDocWindowActivate

El marco llama a esta función para activar o desactivar una ventana de documento para la edición local.

virtual void OnDocWindowActivate(BOOL bActivate);

Parámetros

bActivate
El valor de este parámetro se usa para especificar si la ventana de documento sobre herramientas se va a activar o desactivar.

Comentarios

La implementación predeterminada quita o agrega los elementos de la interfaz de usuario de nivel de marco según corresponda. Invalide esta función si desea realizar acciones adicionales cuando se activa o desactiva el documento que contiene el elemento.

Para obtener más información, consulte el artículo Activación.

COleServerDoc::OnExecOleCmd

El marco llama a esta función para ejecutar un comando especificado o mostrar ayuda para el comando.

virtual HRESULT OnExecOleCmd(
    const GUID* pguidCmdGroup,
    DWORD nCmdID,
    DWORD nCmdExecOpt,
    VARIANTARG* pvarargIn,
    VARIANTARG* pvarargOut);

Parámetros

pguidCmdGroup
Puntero a un GUID que identifica un conjunto de comandos. Puede ser NULL para indicar el grupo de comandos predeterminado.

nCmdID
El comando que se debe ejecutar. Debe estar en el grupo identificado por pguidCmdGroup.

nCmdExecOut
La forma en que el objeto debe ejecutar el comando, uno o varios de los siguientes valores de la enumeración OLECMDEXECOPT:

OLECMDEXECOPT_DODEFAULT

OLECMDEXECOPT_PROMPTUSER

OLECMDEXECOPT_DONTPROMPTUSER

OLECMDEXECOPT_SHOWHELP

pvarargIn
Puntero a un VARIANTARG que contiene argumentos de entrada para el comando. Puede ser NULL.

pvarargOut
Puntero a un VARIANTARG para recibir los valores devueltos de salida del comando. Puede ser NULL.

Valor devuelto

Devuelve S_OK si se ejecuta correctamente; de lo contrario, uno de los códigos de error siguientes:

Valor Descripción
E_UNEXPECTED Se ha producido un error inesperado
E_FAIL Error
E_NOTIMPL Indica que MFC debe intentar traducir y enviar el comando
OLECMDERR_E_UNKNOWNGROUP pguidCmdGroup es distinto de NULL, pero no especifica un grupo de comandos reconocido
OLECMDERR_E_NOTSUPPORTED nCmdID no se reconoce como comando válido en el grupo pguidCmdGroup
OLECMDERR_DISABLED El comando identificado por nCmdID está deshabilitado y no se puede ejecutar
OLECMDERR_NOHELP El autor de llamada pidió ayuda sobre el comando identificado por nCmdID, pero no hay ninguna ayuda disponible
OLECMDERR_CANCELED El usuario canceló la ejecución

Comentarios

COleCmdUI se puede usar para habilitar, actualizar y establecer otras propiedades de los comandos de la interfaz de usuario docObject. Una vez inicializados los comandos, puede ejecutarlos con OnExecOleCmd.

El marco llama a la función antes de intentar traducir y enviar un comando de documento OLE. No es necesario invalidar esta función para controlar los comandos de documento OLE estándar, pero debe proporcionar una invalidación a esta función si desea controlar sus propios comandos personalizados o controlar los comandos que aceptan parámetros o devuelven resultados.

La mayoría de los comandos no toman argumentos ni valores devueltos. Para la mayoría de los comandos, el autor de la llamada puede pasar valores NULL para pvarargIn y pvarargOut. En el caso de los comandos que esperan valores de entrada, el autor de la llamada puede declarar e inicializar una variable VARIANTARG y pasar un puntero a la variable en pvarargIn. En el caso de los comandos que requieren un valor único, el argumento se puede almacenar directamente en VARIANTARG y pasarse a la función. Se deben empaquetar varios argumentos dentro de VARIANTARG mediante uno de los tipos admitidos (como IDispatch y SAFEARRAY ).

Del mismo modo, si un comando devuelve argumentos, se espera que el autor de la llamada declare un VARIANTARG, inicialícelo en VT_EMPTY y pase su dirección en pvarargOut. Si un comando devuelve un valor único, el objeto puede almacenar ese valor directamente en pvarargOut. Se deben empaquetar varios valores de salida de alguna manera adecuados para VARIANTARG.

La implementación de clase base de esta función recorrerá las estructuras de OLE_COMMAND_MAP asociadas al destino del comando e intentará enviar el comando a un controlador adecuado. La implementación de clase base solo funciona con comandos que no aceptan argumentos ni valores devueltos. Si necesita controlar los comandos que aceptan argumentos o valores devueltos, debe invalidar esta función y trabajar con los parámetros pvarargIn y pvarargOut usted mismo.

COleServerDoc::OnFrameWindowActivate

El marco llama a esta función cuando se activa o desactiva la ventana de marco de la aplicación contenedora.

virtual void OnFrameWindowActivate(BOOL bActivate);

Parámetros

bActivate
Especifica si la ventana de marco está activada o desactivada.

Comentarios

La implementación predeterminada cancela los modos de ayuda en los que podría estar la ventana de marco. Invalide esta función si desea realizar un procesamiento especial cuando se activa o desactiva una ventana de marco.

Para obtener más información, consulte el artículo Activación.

COleServerDoc::OnGetEmbeddedItem

Lo llama el marco cuando una aplicación contenedora llama a la aplicación de servidor para crear o editar un elemento incrustado.

virtual COleServerItem* OnGetEmbeddedItem() = 0;

Valor devuelto

Puntero a un elemento que representa todo el documento; NULL si se produjo un error en la operación.

Comentarios

No hay ninguna implementación predeterminada. Debe invalidar esta función para devolver un elemento que represente todo el documento. Este valor devuelto debe ser un objeto de una clase derivada de COleServerItem.

COleServerDoc::OnReactivateAndUndo

El marco llama a esta función cuando el usuario elige deshacer los cambios realizados en un elemento que se ha activado en contexto, cambiado y posteriormente desactivado.

virtual BOOL OnReactivateAndUndo();

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

La implementación predeterminada no hace nada excepto devolver FALSE para indicar un error.

Invalide esta función si la aplicación admite deshacer. Normalmente, realizaría la operación de deshacer y, a continuación, activaría el elemento mediante una llamada a ActivateInPlace. Si la aplicación contenedora se escribe con la biblioteca microsoft Foundation Class, la llamada a COleClientItem::ReactivateAndUndo hace que se llame a esta función.

COleServerDoc::OnResizeBorder

El marco llama a esta función cuando cambia de tamaño la ventana de marco de la aplicación contenedora.

virtual void OnResizeBorder(
    LPCRECT lpRectBorder,
    LPOLEINPLACEUIWINDOW lpUIWindow,
    BOOL bFrame);

Parámetros

lpRectBorder
Puntero a una estructuraRECT o un objeto CRect que especifica las coordenadas del borde.

lpUIWindow
Puntero a un objeto de clase IOleInPlaceUIWindow que posee la sesión de edición local actual.

bFrame
TRUE si lpUIWindow apunta a la ventana de marco de nivel superior de la aplicación contenedora o FALSE si lpUIWindow apunta a la ventana de marco de nivel de documento de la aplicación contenedora.

Comentarios

Esta función cambia de tamaño y ajusta las barras de herramientas y otros elementos de la interfaz de usuario de acuerdo con el nuevo tamaño de ventana.

Para obtener más información, vea IOleInPlaceUIWindow en Windows SDK.

Se trata de una invalidación avanzada.

COleServerDoc::OnSetHostNames

Lo llama el marco cuando el contenedor establece o cambia los nombres de host de este documento.

virtual void OnSetHostNames(
    LPCTSTR lpszHost,
    LPCTSTR lpszHostObj);

Parámetros

lpszHost
Puntero a una cadena que especifica el nombre de la aplicación del contenedor.

lpszHostObj
Puntero a una cadena que especifica el nombre del contenedor para el documento.

Comentarios

La implementación predeterminada cambia el título del documento para todas las vistas que hacen referencia a este documento.

Invalide esta función si la aplicación establece los títulos a través de un mecanismo diferente.

COleServerDoc::OnSetItemRects

El marco llama a la función para colocar la ventana de marco de edición en contexto dentro de la ventana de la aplicación de marco contenedora.

virtual void OnSetItemRects(
    LPCRECT lpPosRect,
    LPCRECT lpClipRect);

Parámetros

lpPosRect
Puntero a una estructura RECT o un objeto CRect que especifica la posición de la ventana de marco local en relación con el área cliente de la aplicación contenedora.

lpClipRect
Puntero a una estructura RECT o un objeto CRect que especifica el rectángulo de recorte de la ventana de marco local en relación con el área cliente de la aplicación contenedora.

Comentarios

Invalide esta función para actualizar el factor de zoom de la vista, si es necesario.

Normalmente, se llama a esta función en respuesta a una llamada RequestPositionChange, aunque el contenedor puede llamar a ella en cualquier momento para solicitar un cambio de posición para el elemento local.

COleServerDoc::OnShowControlBars

El marco llama a esta función para mostrar u ocultar las barras de control de la aplicación de servidor asociadas a la ventana de marco identificadas por pFrameWnd.

virtual void OnShowControlBars(
    CFrameWnd* pFrameWnd,
    BOOL bShow);

Parámetros

pFrameWnd
Puntero a la ventana de marco cuyas barras de control se deben ocultar o mostrar.

bShow
Determina si las barras de control se van a mostrar u ocultar.

Comentarios

La implementación predeterminada enumera todas las barras de control que pertenecen a esa ventana de marco y oculta o las muestra.

COleServerDoc::OnShowDocument

El marco llama a la función OnShowDocument cuando el documento de servidor debe ocultarse o mostrarse.

virtual void OnShowDocument(BOOL bShow);

Parámetros

bShow
Especifica si la interfaz de usuario del documento se va a mostrar o ocultar.

Comentarios

Si bShow es TRUE, la implementación predeterminada activa la aplicación de servidor, si es necesario, y hace que la aplicación contenedora desplácese por su ventana para que el elemento esté visible. Si bShow es FALSE, la implementación predeterminada desactiva el elemento a través de una llamada a OnDeactivate, destruye u oculta todas las ventanas de marco que se han creado para el documento, excepto la primera. Si no quedan documentos visibles, la implementación predeterminada oculta la aplicación de servidor.

COleServerDoc::OnUpdateDocument

Lo llama el marco al guardar un documento que es un elemento incrustado en un documento compuesto.

virtual BOOL OnUpdateDocument();

Valor devuelto

Distinto de cero si el documento se actualizó correctamente; de lo contrario, 0.

Comentarios

La implementación predeterminada llama a las funciones miembro COleServerDoc::NotifySaved y COleServerDoc::SaveEmbedding y, a continuación, marca el documento como limpio. Invalide esta función si desea realizar un procesamiento especial al actualizar un elemento insertado.

COleServerDoc::RequestPositionChange

Llame a esta función miembro para que la aplicación contenedora cambie la posición del elemento.

void RequestPositionChange(LPCRECT lpPosRect);

Parámetros

lpPosRect
Puntero a una estructura RECT o un objeto CRect que contiene la nueva posición del elemento.

Comentarios

Normalmente se llama a esta función (junto con UpdateAllItems) cuando los datos de un elemento activo local han cambiado. Después de esta llamada, el contenedor podría o no realizar el cambio mediante una llamada a OnSetItemRects. La posición resultante puede ser diferente de la solicitada.

COleServerDoc::SaveEmbedding

Llame a esta función para indicar a la aplicación contenedora que guarde el objeto incrustado.

void SaveEmbedding();

Comentarios

Esta función se llama automáticamente desde OnUpdateDocument. Tenga en cuenta que esta función hace que el elemento se actualice en el disco, por lo que normalmente se llama solo como resultado de una acción de usuario específica.

COleServerDoc::ScrollContainerBy

Llame a la función miembro ScrollContainerBy para desplazar el documento contenedor por la cantidad, en píxeles, indicada por sizeScroll.

BOOL ScrollContainerBy(CSize sizeScroll);

Parámetros

sizeScroll
Indica hasta qué punto se desplazará el documento de contenedor.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Los valores positivos indican el desplazamiento hacia abajo y hacia la derecha; los valores negativos indican el desplazamiento hacia arriba y hacia la izquierda.

COleServerDoc::UpdateAllItems

Llame a esta función para notificar a todos los elementos vinculados conectados al documento que el documento ha cambiado.

void UpdateAllItems(
    COleServerItem* pSender,
    LPARAM lHint = 0L,
    CObject* pHint = NULL,
    DVASPECT nDrawAspect = DVASPECT_CONTENT);

Parámetros

pSender
Puntero al elemento que modificó el documento o NULL si se van a actualizar todos los elementos.

lHint
Contiene información sobre la modificación.

pHint
Puntero a un objeto que almacena información sobre la modificación.

nDrawAspect
Determina cómo se va a dibujar el elemento. Es un valor de la enumeración DVASPECT. Este parámetro puede tener uno de los valores siguientes:

  • El elemento DVASPECT_CONTENT se representa de forma que se pueda mostrar como un objeto insertado dentro de su contenedor.

  • El elemento DVASPECT_THUMBNAIL se representa en una representación de "miniatura", para que se pueda mostrar en una herramienta de exploración.

  • El elemento DVASPECT_ICON se representa mediante un icono.

  • El elemento DVASPECT_DOCPRINT se representa como si estuviera impreso con el comando Imprimir del menú Archivo.

Comentarios

Normalmente, se llama a esta función después de que el usuario cambie el documento del servidor. Si un elemento de OLE está vinculado al documento con un vínculo automático, el elemento se actualiza para reflejar los cambios. En las aplicaciones de contenedor escritas con la Biblioteca de clases de Microsoft Foundation, se llama a la función miembro OnChange de COleClientItem.

Esta función llama a la función miembro OnUpdate para cada uno de los elementos del documento, excepto el elemento de envío, pasando pHint, lHint y nDrawAspect. Use estos parámetros para pasar información a los elementos sobre las modificaciones realizadas en el documento. Puede codificar información mediante lHint o puede definir una clase derivada de CObject para almacenar información sobre las modificaciones y pasar un objeto de esa clase mediante pHint. Invalide la función miembro OnUpdate en la clase derivada de COleServerItem para optimizar la actualización de cada elemento en función de si su presentación ha cambiado.

Consulte también

HIERSVR de muestra MFC
COleLinkingDoc (clase)
Gráfico de jerarquías
COleDocument (clase)
COleLinkingDoc (clase)
COleTemplateServer (clase)