Compartir a través de


Clase COleServerItem

Proporciona la interfaz del servidor a elementos OLE.

Sintaxis

class COleServerItem : public CDocItem

Miembros

Constructores protegidos

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

Métodos públicos

Nombre Descripción
COleServerItem::AddOtherClipboardData Coloca los formatos de presentación y conversión en un objeto COleDataSource.
COleServerItem::CopyToClipboard Copia el elemento al Portapapeles.
COleServerItem::DoDragDrop Realiza una operación de arrastrar y colocar.
COleServerItem::GetClipboardData Obtiene el origen de datos para su uso en la transferencia de datos (arrastrar y colocar o Portapapeles).
COleServerItem::GetDocument Devuelve el documento de servidor que contiene el elemento.
COleServerItem::GetEmbedSourceData Obtiene los datos CF_EMBEDSOURCE de un elemento OLE.
COleServerItem::GetItemName Devuelve el nombre del elemento. Se usa solo para elementos vinculados.
COleServerItem::GetLinkSourceData Obtiene los datos CF_LINKSOURCE de un elemento OLE.
COleServerItem::GetObjectDescriptorData Obtiene los datos CF_OBJECTDESCRIPTOR de un elemento OLE.
COleServerItem::IsConnected Indica si el elemento está asociado actualmente a un contenedor activo.
COleServerItem::IsLinkedItem Indica si el elemento representa un elemento OLE vinculado.
COleServerItem::NotifyChanged Actualiza todos los contenedores con la actualización de vínculos automáticos.
COleServerItem::OnDoVerb Se le llama para ejecutar un verbo.
COleServerItem::OnDraw Se le llama cuando el contenedor solicita dibujar el elemento; implementación necesaria.
COleServerItem::OnDrawEx Se le llama para el dibujo de elementos especializados.
COleServerItem::OnGetClipboardData El marco de trabajo llama a este método para obtener los datos que se van a copiar en el Portapapeles.
COleServerItem::OnGetExtent El marco de trabajo llama a este método para recuperar el tamaño del elemento OLE.
COleServerItem::OnInitFromData El marco de trabajo llama a este método para inicializar un elemento OLE mediante el contenido del objeto de transferencia de datos especificado.
COleServerItem::OnQueryUpdateItems Se le llama para determinar si los elementos vinculados requieren actualización.
COleServerItem::OnRenderData Recupera los datos como parte de la representación diferida.
COleServerItem::OnRenderFileData Recupera datos en un objeto CFile como parte de la representación diferida.
COleServerItem::OnRenderGlobalData Recupera datos en un HGLOBAL como parte de la representación diferida.
COleServerItem::OnSetColorScheme Se le llama para establecer la combinación de colores del elemento.
COleServerItem::OnSetData Se le llama para establecer los datos del elemento.
COleServerItem::OnSetExtent El marco de trabajo llama a este método para establecer el tamaño del elemento OLE.
COleServerItem::OnUpdate Se le llama cuando se cambia alguna parte del documento al que pertenece el elemento.
COleServerItem::OnUpdateItems Se le llama para actualizar la memoria caché de presentación de todos los elementos del documento de servidor.
COleServerItem::SetItemName Establece el nombre del elemento. Se usa solo para elementos vinculados.

Métodos protegidos

Nombre Descripción
COleServerItem::GetDataSource Obtiene el objeto utilizado para almacenar formatos de conversión.
COleServerItem::OnHide El marco de trabajo llama a este método para ocultar el elemento OLE.
COleServerItem::OnOpen El marco de trabajo llama a este método para mostrar el elemento OLE en su propia ventana de nivel superior.
COleServerItem::OnShow Se le llama cuando el contenedor solicita que se muestre el elemento.

Miembros de datos públicos

Nombre Descripción
COleServerItem::m_sizeExtent Informa al servidor sobre qué parte del elemento OLE es visible.

Comentarios

Un elemento vinculado puede representar a algunos o a todos los elementos de un documento de servidor. Un elemento insertado siempre representa un documento de servidor completo.

La clase COleServerItem define varias funciones miembro que se pueden invalidar y son llamadas por las bibliotecas de vínculos dinámicos (DLL) del sistema OLE, normalmente en respuesta a las solicitudes de la aplicación contenedora. Estas funciones miembro permiten que la aplicación contenedora manipule el elemento indirectamente de varias maneras: mostrándolo, ejecutando sus verbos o recuperando sus datos en varios formatos.

Para usar COleServerItem, derive una clase de dicho elemento e implemente las funciones miembro OnDraw y Serialize. La función OnDraw proporciona la representación del metarchivo de un elemento, lo que le permite mostrarse cuando una aplicación contenedora abre un documento compuesto. La función Serialize de CObject proporciona la representación nativa de un elemento, lo que permite transferir un elemento insertado entre el servidor y las aplicaciones contenedoras. OnGetExtent proporciona el tamaño natural del elemento al contenedor, lo que permite al contenedor ajustar el tamaño del elemento.

Para más información sobre los servidores y temas relacionados, consulte el artículo Servidores: Implementación de un servidor y "Creación de una aplicación contenedora o de servidor" en el artículo Contenedores: Características avanzadas.

Jerarquía de herencia

CObject

CCmdTarget

CDocItem

COleServerItem

Requisitos

Encabezado: afxole.h

COleServerItem::AddOtherClipboardData

Llame a esta función para colocar los formatos de presentación y conversión del elemento OLE en el objeto COleDataSource especificado.

void AddOtherClipboardData(COleDataSource* pDataSource);

Parámetros

pDataSource
Puntero al objeto COleDataSource en el que se deben colocar los datos.

Comentarios

Debe haber implementado la función miembro OnDraw para proporcionar el formato de presentación (una imagen de metarchivo) para el elemento. Para admitir otros formatos de conversión, regístrelos mediante el objeto COleDataSource devuelto por GetDataSource e invalide la función miembro OnRenderData para proporcionar datos en los formatos que desea admitir.

COleServerItem::COleServerItem

Construye un objeto COleServerItem y lo agrega a la colección de elementos del documento de servidor.

COleServerItem(
    COleServerDoc* pServerDoc,
    BOOL bAutoDelete);

Parámetros

pServerDoc
Puntero al documento que contendrá el nuevo elemento.

bAutoDelete
Marca que indica si el objeto se puede eliminar cuando se lanza un vínculo que vaya dirigido a él. Establezca esto en FALSE si el objeto COleServerItem es una parte integral de los datos del documento que debe eliminar. Establezca esto en TRUE si el objeto es una estructura secundaria que se usa para identificar un intervalo de los datos del documento que puede ser eliminado por el marco.

COleServerItem::CopyToClipboard

Llame a esta función para copiar el elemento OLE en el Portapapeles.

void CopyToClipboard(BOOL bIncludeLink = FALSE);

Parámetros

bIncludeLink
Establezca este elemento en TRUE si los datos del vínculo se deben copiar en el Portapapeles. Establezca este elemento en FALSE si la aplicación de servidor no admite vínculos.

Comentarios

La función usa la función miembro OnGetClipboardData para crear un objeto COleDataSource que contenga los datos del elemento OLE en los formatos admitidos. Así, la función coloca el objeto COleDataSource en el Portapapeles mediante la función COleDataSource::SetClipboard. El objeto COleDataSource incluye los datos nativos del elemento y su representación en formato CF_METAFILEPICT, así como datos en cualquier formato de conversión que usted decida admitir. Debe haber implementado Serialize y OnDraw para que esta función miembro funcione.

COleServerItem::DoDragDrop

Llame a la función miembro DoDragDrop para realizar una operación de arrastrar y colocar.

DROPEFFECT DoDragDrop(
    LPCRECT lpRectItem,
    CPoint ptOffset,
    BOOL bIncludeLink = FALSE,
    DWORD dwEffects = DROPEFFECT_COPY | DROPEFFECT_MOVE,
    LPCRECT lpRectStartDrag = NULL);

Parámetros

lpRectItem
Rectángulo del elemento en pantalla, en píxeles, en relación con el área cliente.

ptOffset
El desplazamiento en lpItemRect donde se encontraba la posición del ratón en el momento del arrastre.

bIncludeLink
Establezca este elemento en TRUE si los datos del vínculo se deben copiar en el Portapapeles. Establezca este elemento en FALSE si la aplicación no admite vínculos.

dwEffects
Determina los efectos que permitirá el origen del arrastre en la operación de arrastre (una combinación de Copiar, Mover y Vincular).

lpRectStartDrag
Puntero al rectángulo que define dónde se inicia realmente el arrastre. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

Valor devuelto

Un valor de la enumeración DROPEFFECT. Si es DROPEFFECT_MOVE, se deben quitar los datos originales.

Comentarios

La operación de arrastrar y colocar no se inicia inmediatamente. Espera hasta que el cursor del mouse salga del rectángulo especificado por lpRectStartDrag o hasta que haya transcurrido un número especificado de milisegundos. Si lpRectStartDrag tiene un valor NULL, se usa un rectángulo predeterminado para que el arrastre se inicie cuando el cursor del ratón se mueva un píxel.

El tiempo de retraso se especifica con una configuración de clave del Registro. Llame a CWinApp::WriteProfileString o CWinApp::WriteProfileInt para cambiar el tiempo de retraso. Si no especifica el tiempo de retraso, se usará un valor predeterminado de 200 milisegundos. El tiempo de retraso de arrastre se almacena de la siguiente manera:

  • El tiempo de retraso de arrastre de Windows NT se almacena en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\IniFileMapping\win.ini\Windows\DragDelay.

  • El tiempo de retraso de arrastre de Windows 3.x se almacena en el archivo WIN.INI, en la sección [Windows}.

  • El tiempo de retraso de arrastre de Windows 95/98 se almacena en una versión almacenada en caché de WIN.INI.

Para obtener más información sobre cómo se almacena la información de retraso de arrastre en el Registro o en el archivo .INI, consulte WriteProfileString en Windows SDK.

COleServerItem::GetClipboardData

Llame a esta función para rellenar el objeto COleDataSource especificado con todos los datos que se copiarían en el Portapapeles si llamara a CopyToClipboard (los mismos datos también se transferirán si llama a DoDragDrop).

void GetClipboardData(
    COleDataSource* pDataSource,
    BOOL bIncludeLink = FALSE,
    LPPOINT lpOffset = NULL,
    LPSIZE lpSize = NULL);

Parámetros

pDataSource
Puntero al objeto COleDataSource que recibirá los datos del elemento OLE en todos los formatos admitidos.

bIncludeLink
En TRUE si los datos del vínculo deben copiarse en el Portapapeles. En FALSE si la aplicación de servidor no admite vínculos.

lpOffset
El desplazamiento, en píxeles, del cursor del ratón desde el origen del objeto.

lpSize
El tamaño del objeto en píxeles.

Comentarios

Esta función llama a la función miembro GetEmbedSourceData para obtener los datos nativos del elemento OLE y llama a la función miembro AddOtherClipboardData para obtener el formato de presentación y cualquier formato de conversión admitido. Si bIncludeLink es TRUE, la función también llama a GetLinkSourceData para obtener los datos de vínculo del elemento.

Invalide esta función si desea colocar formatos en un objeto COleDataSource antes o después de los formatos proporcionados por CopyToClipboard.

COleServerItem::GetDataSource

Llame a esta función para obtener el objeto COleDataSource que se usa para almacenar los formatos de conversión que admite la aplicación de servidor.

COleDataSource* GetDataSource();

Valor devuelto

Puntero al objeto COleDataSource utilizado para almacenar los formatos de conversión.

Comentarios

Si desea que la aplicación de servidor ofrezca datos en diversos formatos durante las operaciones de transferencia de datos, registre esos formatos con el objeto COleDataSource devuelto por esta función. Por ejemplo, si desea proporcionar una representación CF_TEXT del elemento OLE para las operaciones de arrastrar y colocar del Portapapeles, tendría que registrar el formato con el objeto COleDataSource que devuelve esta función, y después invalidar la función miembro OnRenderXxxData para proporcionar los datos.

COleServerItem::GetDocument

Llame a esta función para obtener un puntero al documento que contiene el elemento.

COleServerDoc* GetDocument() const;

Valor devuelto

Puntero al documento que contiene el elemento; será un valor NULL si el elemento no forma parte de un documento.

Comentarios

Esto permite el acceso al documento de servidor que usted pasó como argumento al constructor COleServerItem.

COleServerItem::GetEmbedSourceData

Llame a esta función para obtener los datos CF_EMBEDSOURCE de un elemento OLE.

void GetEmbedSourceData(LPSTGMEDIUM lpStgMedium);

Parámetros

lpStgMedium
Puntero a la estructura STGMEDIUM que recibirá los datos CF_EMBEDSOURCE del elemento OLE.

Comentarios

Este formato incluye los datos nativos del elemento. Debe haber implementado la función miembro Serialize para que esta función funcione correctamente.

Así, el resultado se puede agregar a un origen de datos mediante COleDataSource::CacheData. COleServerItem::OnGetClipboardData llama automáticamente a esta función.

Para más información, consulte STGMEDIUM en Windows SDK.

COleServerItem::GetItemName

Llame a esta función para obtener el nombre del elemento.

const CString& GetItemName() const;

Valor devuelto

Nombre del artículo.

Comentarios

Normalmente, solo se llama a esta función para los elementos vinculados.

COleServerItem::GetLinkSourceData

Llame a esta función para obtener los datos CF_LINKSOURCE de un elemento OLE.

BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);

Parámetros

lpStgMedium
Puntero a la estructura STGMEDIUM que recibirá los datos CF_LINKSOURCE del elemento OLE.

Valor devuelto

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

Comentarios

Este formato incluye el CLSID que describe el tipo del elemento OLE y la información necesaria para localizar el documento que contiene el elemento OLE.

Así, el resultado se puede agregar a un origen de datos mediante COleDataSource::CacheData. OnGetClipboardData llama automáticamente a esta función.

Para más información, consulte STGMEDIUM en Windows SDK.

COleServerItem::GetObjectDescriptorData

Llame a esta función para obtener los datos CF_OBJECTDESCRIPTOR de un elemento OLE.

void GetObjectDescriptorData(
    LPPOINT lpOffset,
    LPSIZE lpSize,
    LPSTGMEDIUM lpStgMedium);

Parámetros

lpOffset
Desplazamiento del clic del ratón desde la esquina superior izquierda del elemento OLE. Puede ser NULL.

lpSize
Tamaño del elemento OLE. Puede ser NULL.

lpStgMedium
Puntero a la estructura STGMEDIUM que recibirá los datos CF_OBJECTDESCRIPTOR del elemento OLE.

Comentarios

La información se copia en la estructura STGMEDIUM, a la que apunta lpStgMedium. Este formato incluye la información necesaria para el cuadro de diálogo Pegado especial.

Para más información, consulte STGMEDIUM en Windows SDK.

COleServerItem::IsConnected

Llame a esta función para ver si el elemento OLE está conectado.

BOOL IsConnected() const;

Valor devuelto

Distinto de cero si el elemento está conectado; de lo contrario, 0.

Comentarios

Un elemento OLE se considera conectado si uno o varios contenedores tienen referencias al elemento. Un elemento está conectado si su recuento de referencias es mayor que 0 o si es un elemento insertado.

COleServerItem::IsLinkedItem

Llame a esta función para ver si el elemento OLE es un elemento vinculado.

BOOL IsLinkedItem() const;

Valor devuelto

Distinto de cero si es un elemento vinculado; de lo contrario, 0.

Comentarios

Un elemento se vincula si el elemento es válido y no se devuelve en la lista de elementos insertados del documento. Un elemento vinculado podría estar conectado o no a un contenedor.

Es habitual usar la misma clase tanto para los elementos vinculados como para los insertados. IsLinkedItem permite que los elementos vinculados se comporten de forma diferente a los elementos insertados, aunque muchas veces el código es común.

COleServerItem::m_sizeExtent

Este miembro indica al servidor las partes del objeto que están visibles en el documento contenedor.

CSize m_sizeExtent;

Comentarios

La implementación predeterminada de OnSetExtent establece este miembro.

COleServerItem::NotifyChanged

Llame a esta función después de que el elemento vinculado haya cambiado.

void NotifyChanged(DVASPECT nDrawAspect = DVASPECT_CONTENT);

Parámetros

nDrawAspect
Valor de la enumeración DVASPECT que indica qué aspecto del elemento OLE ha cambiado. Este parámetro puede tener cualquiera de los siguientes valores:

  • 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

Si un elemento de contenedor está vinculado al documento con un vínculo automático, el elemento se actualiza para reflejar los cambios. En las aplicaciones contenedoras escritas con la biblioteca MFC (Microsoft Foundation Class), se llama a COleClientItem::OnChange en respuesta.

COleServerItem::OnDoVerb

El marco de trabajo llama a este método para ejecutar el verbo especificado.

virtual void OnDoVerb(LONG iVerb);

Parámetros

iVerb
Especifica el verbo que se va a ejecutar. Puede ser cualquiera de los siguientes:

Valor Significado Símbolo
0 verbo principal OLEIVERB_PRIMARY
1 Verbo secundario (Ninguna)
- 1 Mostrar el elemento para su edición OLEIVERB_SHOW
- 2 Edición del elemento en una ventana independiente OLEIVERB_OPEN
- 3 Ocultar el elemento OLEIVERB_HIDE

El valor -1 suele ser un alias para otro verbo. Si no se admite la edición abierta, -2 tiene el mismo efecto que -1. Para obtener valores adicionales, consulte IOleObject::DoVerb en Windows SDK.

Comentarios

Si la aplicación contenedora se escribió con la biblioteca MFC (Microsoft Foundation Class), se llama a esta función cuando se llama a la función miembro COleClientItem::Activate del objeto COleClientItem correspondiente. La implementación predeterminada llama a la función miembro OnShow si se especifica el verbo principal o OLEIVERB_SHOW, a OnOpen si se especifica el verbo secundario o OLEIVERB_OPEN y a OnHide si se especifica OLEIVERB_HIDE. La implementación predeterminada llama a OnShow si iVerb no es uno de los verbos enumerados anteriormente.

Invalide esta función si el verbo principal no muestra el elemento. Por ejemplo, si el elemento es una grabación de sonido y su verbo principal es Play, no tendría que mostrar la aplicación de servidor para reproducir el elemento.

Para obtener más información, vea IOleObject::D oVerb en Windows SDK.

COleServerItem::OnDraw

El marco de trabajo llama a este método para representar el elemento OLE en un metarchivo.

virtual BOOL OnDraw(
    CDC* pDC,
    CSize& rSize) = 0;

Parámetros

pDC
Puntero al objeto CDC en el que se va a dibujar el elemento. El contexto de presentación se conecta automáticamente al contexto de presentación del atributo para que pueda llamar a funciones de atributo, aunque hacerlo haría que el metarchivo sea específico del dispositivo.

rSize
Tamaño, en unidades HIMETRIC, en las que se va a dibujar el metarchivo.

Valor devuelto

Distinto de cero si el elemento se ha dibujado correctamente; de lo contrario, 0.

Comentarios

La representación del metarchivo del elemento OLE se usa para mostrar el elemento en la aplicación contenedora. Si la aplicación contenedora se escribió con la biblioteca MFC (Microsoft Foundation Class), la función miembro Draw del objeto COleClientItem correspondiente utiliza el metarchivo. No hay ninguna implementación predeterminada. Debe invalidar esta función para dibujar el elemento en el contexto del dispositivo especificado.

COleServerItem::OnDrawEx

El marco de trabajo llama a este método para todos los dibujos.

virtual BOOL OnDrawEx(
    CDC* pDC,
    DVASPECT nDrawAspect,
    CSize& rSize);

Parámetros

pDC
Puntero al objeto CDC en el que se va a dibujar el elemento. El DC se conecta automáticamente al DC del atributo para que pueda llamar a funciones de atributo, aunque hacerlo haría que el metarchivo sea específico del dispositivo.

nDrawAspect
Un valor de la enumeración DVASPECT. Este parámetro puede tener cualquiera de los siguientes valores:

  • 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.

rSize
Tamaño del elemento en unidades HIMETRIC.

Valor devuelto

Distinto de cero si el elemento se ha dibujado correctamente; de lo contrario, 0.

Comentarios

La implementación predeterminada llama a OnDraw cuando DVASPECT es igual a DVASPECT_CONTENT; de lo contrario, se produce un error.

Invalide esta función para proporcionar datos de presentación para aspectos distintos de DVASPECT_CONTENT, como DVASPECT_ICON o DVASPECT_THUMBNAIL.

COleServerItem::OnGetClipboardData

El marco de trabajo llama a este método para obtener un objeto COleDataSource que contenga todos los datos que se colocarían en el Portapapeles mediante una llamada a la función miembro CopyToClipboard.

virtual COleDataSource* OnGetClipboardData(
    BOOL bIncludeLink,
    LPPOINT lpOffset,
    LPSIZE lpSize);

Parámetros

bIncludeLink
Establezca este elemento en TRUE si los datos del vínculo se deben copiar en el Portapapeles. Establezca este elemento en FALSE si la aplicación de servidor no admite vínculos.

lpOffset
El desplazamiento del cursor del ratón desde el origen del objeto en píxeles.

lpSize
El tamaño del objeto en píxeles.

Valor devuelto

Puntero a un objeto COleDataSource que contiene los datos del Portapapeles.

Comentarios

La implementación predeterminada de esta función llama a GetClipboardData.

COleServerItem::OnGetExtent

El marco de trabajo llama a este método para recuperar el tamaño, en unidades HIMETRIC, del elemento OLE.

virtual BOOL OnGetExtent(
    DVASPECT nDrawAspect,
    CSize& rSize);

Parámetros

nDrawAspect
Especifica el aspecto del elemento OLE cuyos límites se van a recuperar. Este parámetro puede tener cualquiera de los siguientes valores:

  • 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.

rSize
Referencia a un objeto CSize que recibirá el tamaño del elemento OLE.

Valor devuelto

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

Comentarios

Si la aplicación contenedora se escribió con la biblioteca MFC (Microsoft Foundation Class), se llama a esta función cuando se llama a la función miembro GetExtent del objeto COleClientItem correspondiente. La implementación predeterminada no hace nada. Tiene que implementarla por su cuenta. Invalide esta función si desea realizar un procesamiento especial al manejar una solicitud para el tamaño del elemento OLE.

COleServerItem::OnHide

El marco de trabajo llama a este método para ocultar el elemento OLE.

virtual void OnHide();

Comentarios

El valor predeterminado llama a COleServerDoc::OnShowDocument( FALSE ). La función también notifica al contenedor que el elemento OLE se ha ocultado. Invalide esta función si desea realizar un procesamiento especial al ocultar un elemento OLE.

COleServerItem::OnInitFromData

El marco de trabajo llama a este método para inicializar un elemento OLE mediante el contenido de pDataObject.

virtual BOOL OnInitFromData(
    COleDataObject* pDataObject,
    BOOL bCreation);

Parámetros

pDataObject
Puntero a un objeto de datos OLE que contiene datos en varios formatos para inicializar el elemento OLE.

bCreation
En TRUE si se llama a la función para inicializar un elemento OLE recién creado por una aplicación contenedora. En FALSE si se llama a la función para reemplazar el contenido de un elemento OLE ya existente.

Valor devuelto

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

Comentarios

Si bCreation es TRUE, se llama a esta función si un contenedor implementa Insertar nuevo objeto en función de la selección actual. Los datos seleccionados se usan al crear el nuevo elemento OLE. Por ejemplo, al seleccionar un rango de celdas en un programa de hoja de cálculo y, después, usar Insertar nuevo objeto para crear un gráfico basado en los valores del rango seleccionado. La implementación predeterminada no hace nada. Invalide esta función para elegir un formato aceptable entre los ofrecidos por pDataObject e inicializar el elemento OLE en función de los datos proporcionados. Se trata de una invalidación avanzada.

Para más información, consulte IOleObject::InitFromData en Windows SDK.

COleServerItem::OnOpen

El marco de trabajo llama a este método para mostrar el elemento OLE en una instancia independiente de la aplicación de servidor, en vez de hacerlo en su mismo lugar.

virtual void OnOpen();

Comentarios

La implementación predeterminada activa la primera ventana de marco que muestra el documento que contiene el elemento OLE; si la aplicación es un mini-servidor, la implementación predeterminada muestra la ventana principal. La función también notifica al contenedor que el elemento OLE se ha abierto.

Invalide esta función si desea realizar un procesamiento especial al abrir un elemento OLE. Esto es especialmente habitual con los elementos vinculados en los que desea establecer la selección al vínculo cuando se abre.

Para más información, consulte IOleClientSite::OnShowWindow en Windows SDK.

COleServerItem::OnQueryUpdateItems

El marco de trabajo llama a este método para comprobar si los elementos vinculados del documento de servidor actual están actualizados.

virtual BOOL OnQueryUpdateItems();

Valor devuelto

Distinto de cero si el documento tiene elementos que necesitan actualizaciones; 0 si todos los elementos están actualizados.

Comentarios

Un elemento no está actualizado si se ha cambiado su documento de origen pero el elemento vinculado no se ha actualizado para reflejar los cambios en el documento.

COleServerItem::OnRenderData

El marco de trabajo llama a este método para recuperar datos en el formato especificado.

virtual BOOL OnRenderData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium);

Parámetros

lpFormatEtc
Apunta a la estructura FORMATETC que especifica el formato en el que se solicita la información.

lpStgMedium
Apunta a una estructura STGMEDIUM a la que se van a devolver los datos.

Valor devuelto

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

Comentarios

El formato especificado es uno colocado anteriormente en el objeto COleDataSource mediante las funciones miembro DelayRenderData o DelayRenderFileData para la representación diferida. La implementación predeterminada de esta función llama a OnRenderFileData o a OnRenderGlobalData, respectivamente, si el medio de almacenamiento proporcionado es un archivo o una memoria. Si no se proporciona ninguno de estos formatos, la implementación predeterminada devuelve 0 y no hace nada.

Si lpStgMedium->tymed es TYMED_NULL, la estructura STGMEDIUM debe asignarse y rellenarse según lo especificado por lpFormatEtc->tymed. Si no es TYMED_NULL, el STGMEDIUM debe rellenarse en su lugar con los datos.

Se trata de una invalidación avanzada. Invalide esta función para proporcionar los datos en el formato y el medio solicitados. En función de los datos, es posible que se desee invalidar una de las otras versiones de esta función en su lugar. Si los datos son pequeños y fijos en su tamaño, invalide OnRenderGlobalData. Si los datos están en un archivo o tienen un tamaño variable, invalide OnRenderFileData.

Para más información, consulte IDataObject::GetData, STGMEDIUM, FORMATETC y TYMED en Windows SDK.

COleServerItem::OnRenderFileData

Lo llama el marco para recuperar datos en el formato especificado cuando el medio de almacenamiento es un archivo.

virtual BOOL OnRenderFileData(
    LPFORMATETC lpFormatEtc,
    CFile* pFile);

Parámetros

lpFormatEtc
Apunta a la estructura FORMATETC que especifica el formato en el que se solicita la información.

pFile
Apunta a un objeto CFile en el que se van a representar los datos.

Valor devuelto

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

Comentarios

El formato especificado es uno colocado anteriormente en el objeto COleDataSource mediante la función miembro DelayRenderData para la representación diferida. La implementación predeterminada de esta función devuelve FALSE.

Se trata de una invalidación avanzada. Invalide esta función para proporcionar los datos en el formato y el medio solicitados. En función de los datos, es posible que se desee invalidar una de las otras versiones de esta función en su lugar. Si desea manejar varios medios de almacenamiento, invalide OnRenderData. Si los datos están en un archivo o tienen un tamaño variable, invalide OnRenderFileData.

Para más información, consulte IDataObject::GetData y FORMATETC en Windows SDK.

COleServerItem::OnRenderGlobalData

El marco de trabajo llama a este método para recuperar los datos en el formato especificado cuando el medio de almacenamiento especificado es la memoria global.

virtual BOOL OnRenderGlobalData(
    LPFORMATETC lpFormatEtc,
    HGLOBAL* phGlobal);

Parámetros

lpFormatEtc
Apunta a la estructura FORMATETC que especifica el formato en el que se solicita la información.

phGlobal
Apunta a un manipulador de la memoria global en la que se van a devolver los datos. Si no se ha asignado una memoria, este parámetro puede ser NULL.

Valor devuelto

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

Comentarios

El formato especificado es uno colocado anteriormente en el objeto COleDataSource mediante la función miembro DelayRenderData para la representación diferida. La implementación predeterminada de esta función devuelve FALSE.

Si phGlobal es NULL, se debe asignar y devolver un nuevo elemento HGLOBAL en phGlobal. De lo contrario, el elemento HGLOBAL especificado por phGlobal se debe rellenar con los datos. La cantidad de datos colocados en HGLOBAL no debe superar el tamaño actual del bloque de memoria. Además, el bloque no se puede reasignar a un tamaño mayor.

Se trata de una invalidación avanzada. Invalide esta función para proporcionar los datos en el formato y el medio solicitados. En función de los datos, es posible que se desee invalidar una de las otras versiones de esta función en su lugar. Si desea manejar varios medios de almacenamiento, invalide OnRenderData. Si los datos están en un archivo o tienen un tamaño variable, invalide OnRenderFileData.

Para más información, consulte IDataObject::GetData y FORMATETC en Windows SDK.

COleServerItem::OnSetColorScheme

El marco de trabajo llama a este método para especificar una paleta de colores que se usará al editar el elemento OLE.

virtual BOOL OnSetColorScheme(const LOGPALETTE* lpLogPalette);

Parámetros

lpLogPalette
Puntero a una estructura LOGPALETTE de Windows.

Valor devuelto

Distinto de cero si se utiliza la paleta de colores; de lo contrario, 0.

Comentarios

Si la aplicación contenedora se escribió mediante la biblioteca MFC (Microsoft Foundation Class), se llama a esta función cuando se llama a la función IOleObject::SetColorScheme del objeto COleClientItem correspondiente. La implementación predeterminada devuelve FALSE. Invalide esta función si desea usar la paleta recomendada. La aplicación de servidor no es necesaria para usar la paleta sugerida.

Para más información, consulte IOleObject::SetColorScheme en Windows SDK.

COleServerItem::OnSetData

El marco de trabajo llama a este método para reemplazar los datos del elemento OLE con los datos especificados.

virtual BOOL OnSetData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium,
    BOOL bRelease);

Parámetros

lpFormatEtc
Puntero a una estructura FORMATETC que especifica el formato de los datos.

lpStgMedium
Puntero a una estructura STGMEDIUM en la que residen los datos.

bRelease
Indica quién tiene la propiedad del medio de almacenamiento después de completar la llamada de función. El autor de la llamada decide quién es responsable de liberar los recursos asignados en nombre del medio de almacenamiento. El autor de la llamada lo hace estableciendo bRelease. Si bRelease es distinto de cero, el elemento de servidor se convierte en el propietario, liberando el medio cuando termina de usarlo. Cuando bRelease es 0, el autor de llamada conserva la propiedad y el elemento de servidor puede usar el medio de almacenamiento solo durante la llamada.

Valor devuelto

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

Comentarios

El elemento de servidor no se convierte en propietario de los datos hasta que los obtiene correctamente. Es decir, no se convierte en propietario si devuelve 0. Si el origen de datos se convierte en propietario, libera el medio de almacenamiento llamando a la función ReleaseStgMedium.

La implementación predeterminada no hace nada. Invalide esta función para reemplazar los datos del elemento OLE con los datos especificados. Se trata de una invalidación avanzada.

Para más información, consulte STGMEDIUM, FORMATETC y ReleaseStgMedium en Windows SDK.

COleServerItem::OnSetExtent

El marco de trabajo llama a este método para indicar al elemento OLE el espacio que hay disponible en el documento contenedor.

virtual BOOL OnSetExtent(
    DVASPECT nDrawAspect,
    const CSize& size);

Parámetros

nDrawAspect
Especifica el aspecto del elemento OLE del que se están estableciendo los límites. Este parámetro puede tener cualquiera de los siguientes valores:

  • 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.

size
Una estructura CSize que especifica el nuevo tamaño del elemento OLE.

Valor devuelto

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

Comentarios

Si la aplicación contenedora se escribió con la biblioteca MFC (Microsoft Foundation Class), se llama a esta función cuando se llama a la función miembro SetExtent del objeto COleClientItem correspondiente. La implementación predeterminada establece el miembro m_sizeExtent en el tamaño especificado si nDrawAspect es DVASPECT_CONTENT; de lo contrario, devuelve 0. Invalide esta función para realizar un procesamiento especial al cambiar el tamaño del elemento.

COleServerItem::OnShow

El marco de trabajo llama a este método para indicar a la aplicación de servidor que muestre el elemento OLE en su mismo lugar.

virtual void OnShow();

Comentarios

Normalmente, se llama a esta función cuando el usuario de la aplicación contenedora crea un elemento o ejecuta un verbo, como Edit, que requiere que se muestre el elemento. La implementación predeterminada intenta la activación en contexto. Si esto falla, la función llama a la función miembro OnOpen para mostrar el elemento OLE en una ventana independiente.

Invalide esta función si desea realizar un procesamiento especial cuando se muestra un elemento OLE.

COleServerItem::OnUpdate

El marco de trabajo llama a este método cuando se ha modificado un elemento.

virtual void OnUpdate(
    COleServerItem* pSender,
    LPARAM lHint,
    CObject* pHint,
    DVASPECT nDrawAspect);

Parámetros

pSender
Puntero al elemento que modificó el documento. Puede ser NULL.

lHint
Contiene información sobre la modificación.

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

nDrawAspect
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

La implementación predeterminada llama a NotifyChanged, independientemente de la sugerencia o del emisor.

COleServerItem::OnUpdateItems

El marco de trabajo llama a este método para actualizar todos los elementos del documento de servidor.

virtual void OnUpdateItems();

Comentarios

La implementación predeterminada llama a UpdateLink para todos los objetos COleClientItem del documento.

COleServerItem::SetItemName

Llame a esta función cuando cree un elemento vinculado para establecer su nombre.

void SetItemName(LPCTSTR lpszItemName);

Parámetros

lpszItemName
Puntero al nuevo nombre del elemento.

Comentarios

El nombre debe ser único en el documento. Cuando se llama a una aplicación de servidor para editar un elemento vinculado, la aplicación usa este nombre para buscar el elemento. No es necesario llamar a esta función para los elementos insertados.

Consulte también

HIERSVR de muestra MFC
CDocItem (clase)
Gráfico de jerarquías
COleClientItem (clase)
COleServerDoc (clase)
COleTemplateServer (clase)