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
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 COleLinkingDoc
la implementación de OnNewDocument
, OnOpenDocument
y 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 COleServerDoc
implementació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)