Compartir a través de


Clase COleControl

Una clase base eficaz para desarrollar controles OLE.

Sintaxis

class COleControl : public CWnd

Miembros

Constructores públicos

Nombre Descripción
COleControl::COleControl Crea un objeto COleControl.

Métodos públicos

Nombre Descripción
COleControl::AmbientAppearance Recupera la apariencia actual del control.
COleControl::AmbientBackColor Devuelve el valor de la propiedad BackColor del ambiente.
COleControl::AmbientDisplayName Devuelve el nombre del control según lo especificado por el contenedor.
COleControl::AmbientFont Devuelve el valor de la propiedad Font del ambiente.
COleControl::AmbientForeColor Devuelve el valor de la propiedad Fore del ambiente.
COleControl::AmbientLocaleID Devuelve el identificador de configuración regional del contenedor.
COleControl::AmbientScaleUnits Devuelve el tipo de unidades usadas por el contenedor.
COleControl::AmbientShowGrabHandles Determina si se deben mostrar los manipuladores.
COleControl::AmbientShowHatching Determina si se debe mostrar el sombreado.
COleControl::AmbientTextAlign Devuelve el tipo de alineación de texto especificada por el contenedor.
COleControl::AmbientUIDead Determina si el control debe responder a acciones de interfaz de usuario.
COleControl::AmbientUserMode Determina el modo del contenedor.
COleControl::BoundPropertyChanged Notifica al contenedor que se ha modificado una propiedad enlazada.
COleControl::BoundPropertyRequestEdit Solicita permiso para editar el valor de la propiedad.
COleControl::ClientToParent Convierte un punto relativo al origen del control a un punto relativo al origen de su contenedor.
COleControl::ClipCaretRect Ajusta un rectángulo de intercalación si está superpuesto por un control.
COleControl::ControlInfoChanged Llame a esta función después de que el conjunto mnemotécnico manipulado por el control haya cambiado.
COleControl::DisplayError Muestra los eventos de error del stock al usuario del control.
COleControl::DoClick Implementación del método stock DoClick.
COleControl::DoPropExchange Serializa las propiedades de un objeto COleControl.
COleControl::DoSuperclassPaint Vuelve a dibujar un control OLE que se ha sido subclasificado desde un control de Windows.
COleControl::EnableSimpleFrame Habilita el soporte de marcos simples para un control.
COleControl::ExchangeExtent Serializa el ancho y el alto del control.
COleControl::ExchangeStockProps Serializa las propiedades de stock del control.
COleControl::ExchangeVersion Serializa el número de versión del control.
COleControl::FireClick Activa el evento del stock Click.
COleControl::FireDblClick Activa el evento del stock DblClick.
COleControl::FireError Activa el evento del stock Error.
COleControl::FireEvent Activa un evento personalizado.
COleControl::FireKeyDown Activa el evento del stock KeyDown.
COleControl::FireKeyPress Activa el evento del stock KeyPress.
COleControl::FireKeyUp Activa el evento del stock KeyUp.
COleControl::FireMouseDown Activa el evento del stock MouseDown.
COleControl::FireMouseMove Activa el evento del stock MouseMove.
COleControl::FireMouseUp Activa el evento del stock MouseUp.
COleControl::FireReadyStateChange Desencadena un evento cuando el estado de preparación del control cambia.
COleControl::GetActivationPolicy Modifica el comportamiento de activación predeterminado de un control que admite la interfaz IPointerInactive.
COleControl::GetAmbientProperty Devuelve el valor de la propiedad de ambiente especificada.
COleControl::GetAppearance Devuelve el valor de la propiedad Appearance del stock.
COleControl::GetBackColor Devuelve el valor de la propiedad BackColor del stock.
COleControl::GetBorderStyle Devuelve el valor de la propiedad BorderStyle del stock.
COleControl::GetCapture Determina si un objeto de control activado y sin ventana tiene la captura del mouse.
COleControl::GetClassID Recupera el identificador de clase OLE del control.
COleControl::GetClientOffset Recupera la diferencia entre la esquina superior izquierda del área rectangular del control y la esquina superior izquierda de su área de cliente.
COleControl::GetClientRect Recupera el tamaño del área de cliente del control.
COleControl::GetClientSite Consulta a un objeto para el puntero a su sitio cliente actual dentro de su contenedor.
COleControl::GetControlFlags Recupera la configuración de la marca de control.
COleControl::GetControlSize Devuelve la posición y el tamaño del control OLE.
COleControl::GetDC Proporciona un medio para que un control sin ventana obtenga un contexto de dispositivo de su contenedor.
COleControl::GetEnabled Devuelve el valor de la propiedad Enabled del stock.
COleControl::GetExtendedControl Recupera un puntero a un objeto de control extendido que pertenece al contenedor.
COleControl::GetFocus Determina si el control tiene el foco.
COleControl::GetFont Devuelve el valor de la propiedad Font del stock.
COleControl::GetFontTextMetrics Devuelve las métricas de un objeto CFontHolder.
COleControl::GetForeColor Devuelve el valor de la propiedad ForeColor del stock.
COleControl::GetHwnd Devuelve el valor de la propiedad hWnd del stock.
COleControl::GetMessageString Proporciona texto de la barra de estado para un elemento de menú.
COleControl::GetNotSupported Impide el acceso al valor de la propiedad de un control por parte del usuario.
COleControl::GetReadyState Devuelve el estado de preparación del control.
COleControl::GetRectInContainer Devuelve el rectángulo del control relativo con su contenedor.
COleControl::GetStockTextMetrics Devuelve las métricas de la propiedad Font del stock.
COleControl::GetText Devuelve el valor de la propiedad Text o Caption del stock.
COleControl::GetWindowlessDropTarget Invalida para permitir que un control sin ventana sea el destino de las operaciones de arrastrar y colocar.
COleControl::InitializeIIDs Informa a la clase base de los IID que usará el control.
COleControl::InternalGetFont Devuelve un objeto CFontHolder para la propiedad Font del stock.
COleControl::InternalGetText Recupera la propiedad Caption o Text del stock.
COleControl::InternalSetReadyState Establece el estado de preparación del control y desencadena el evento ready-state-change.
COleControl::InvalidateControl Invalida un área del control mostrado, lo que hace que se vuelva a dibujar.
COleControl::InvalidateRgn Invalida el área de cliente de la ventana del contenedor dentro de la región especificada. Se puede usar para volver a dibujar controles sin ventanas en la región.
COleControl::IsConvertingVBX Permite la carga especializada de un control OLE.
COleControl::IsModified Determina si el estado del control ha cambiado.
COleControl::IsOptimizedDraw Indica si el contenedor admite el dibujo optimizado para la operación de dibujo actual.
COleControl::IsSubclassedControl Se llama para determinar si el control establece subclases en un control de Windows.
COleControl::Load Restablece cualquier dato asincrónico anterior e inicia una nueva carga de la propiedad asincrónica del control.
COleControl::LockInPlaceActive Determina si el contenedor puede desactivar el control.
COleControl::OnAmbientPropertyChange Se llama cuando se cambia una propiedad de ambiente.
COleControl::OnAppearanceChanged Se le llama cuando se cambia la propiedad Appearance del stock.
COleControl::OnBackColorChanged Se le llama cuando se cambia la propiedad BackColor del stock.
COleControl::OnBorderStyleChanged Se le llama cuando se cambia la propiedad BorderStyle stock.
COleControl::OnClick Se llama para desencadenar el evento Stock Click.
COleControl::OnClose Notifica al control que IOleControl::Close ha sido llamado.
COleControl::OnDoVerb Se llama después de que finalice la ejecución de un verbo de control.
COleControl::OnDraw Se llama cuando se solicita a un control que se vuelva a dibujar a sí mismo.
COleControl::OnDrawMetafile Lo llama el contenedor cuando se solicita que un control se vuelva a dibujar mediante un contexto de dispositivo de metarchivo.
COleControl::OnEdit Llamado por el contenedor para activar un control OLE en la interfaz de usuario.
COleControl::OnEnabledChanged Se le llama cuando se cambia la propiedad Enabled del stock.
COleControl::OnEnumVerbs Lo llama el contenedor para enumerar los verbos de un control.
COleControl::OnEventAdvise Se llama cuando los controladores de eventos están conectados o desconectados de un control.
COleControl::OnFontChanged Se llama cuando se cambia la propiedad Font del stock.
COleControl::OnForeColorChanged Se llama cuando se cambia la propiedad ForeColor del stock.
COleControl::OnFreezeEvents Se llama cuando los eventos de un control se inmovilizan o descongelan.
COleControl::OnGetColorSet Notifica al control que IOleObject::GetColorSet ha sido llamado.
COleControl::OnGetControlInfo Proporciona información mnemotécnica al contenedor.
COleControl::OnGetDisplayString Se llama para obtener una cadena para representar un valor de propiedad.
COleControl::OnGetInPlaceMenu Solicita el manipulador del menú del control que se combinará con el menú del contenedor.
COleControl::OnGetNaturalExtent Invalida para recuperar el tamaño de visualización del control más cercano al tamaño y el modo de extensión propuestos.
COleControl::OnGetPredefinedStrings Devuelve cadenas que representan los valores posibles para una propiedad.
COleControl::OnGetPredefinedValue Devuelve el valor correspondiente a una cadena predefinida.
COleControl::OnGetViewExtent Invalida para recuperar el tamaño de las áreas de visualización del control (se puede usar para habilitar el dibujo de dos pasos).
COleControl::OnGetViewRect Invalida para convertir el tamaño del control en un rectángulo a partir de una posición específica.
COleControl::OnGetViewStatus Invalida para recuperar el estado de vista del control.
COleControl::OnHideToolBars Lo llama el contenedor cuando se desactiva la interfaz de usuario del control.
COleControl::OnInactiveMouseMove Invalida para que el contenedor del control inactivo bajo el puntero del mouse envíe mensajes WM_MOUSEMOVE al control.
COleControl::OnInactiveSetCursor Invalida para que el contenedor del control inactivo bajo el puntero del mouse envíe mensajes WM_SETCURSOR al control.
COleControl::OnKeyDownEvent Se llama después de que se haya desencadenado el evento KeyDown del stock.
COleControl::OnKeyPressEvent Se llama después de que se haya desencadenado el evento KeyPress del stock.
COleControl::OnKeyUpEvent Se llama después de que se haya desencadenado el evento KeyUp del stock.
COleControl::OnMapPropertyToPage Indica la página de propiedades que se va a usar para editar una propiedad.
COleControl::OnMnemonic Se llama cuando se ha presionado una tecla mnemotécnica del control.
COleControl::OnProperties Se llama cuando se invoca el verbo "Propiedades" del control.
COleControl::OnQueryHitPoint Invalida para consultar si la presentación de un control se superpone a un punto determinado.
COleControl::OnQueryHitRect Invalida para consultar si la presentación de un control se superpone a cualquier punto de un rectángulo determinado.
COleControl::OnRenderData El marco de trabajo llama a este método para recuperar datos en el formato especificado.
COleControl::OnRenderFileData Lo llama el marco para recuperar datos de un archivo en el formato especificado.
COleControl::OnRenderGlobalData Lo llama el marco para recuperar datos de una memoria global en el formato especificado.
COleControl::OnResetState Restablece las propiedades de un control a los valores predeterminados.
COleControl::OnSetClientSite Notifica al control que IOleControl::SetClientSite ha sido llamado.
COleControl::OnSetData Reemplaza los datos del control por otro valor.
COleControl::OnSetExtent Se llama después de que la extensión del control haya cambiado.
COleControl::OnSetObjectRects Se llama después de cambiar las dimensiones del control.
COleControl::OnShowToolBars Se llama cuando se ha activado la IU para el control.
COleControl::OnTextChanged Se llama cuando se cambia la propiedad Text o Caption del stock.
COleControl::OnWindowlessMessage Procesa los mensajes de ventana (distintos de los mensajes del mouse y del teclado) para los controles sin ventana.
COleControl::ParentToClient Convierte un punto relativo al origen del contenedor a un punto relativo al origen del control.
COleControl::PostModalDialog Notifica al contenedor que se cerró un cuadro de diálogo modal.
COleControl::PreModalDialog Notifica al contenedor que se va a mostrar un cuadro de diálogo modal.
COleControl::RecreateControlWindow Destruye y vuelve a crear la ventana del control.
COleControl::Refresh Fuerza un reintentos de la apariencia de un control.
COleControl::ReleaseCapture Libera la captura del mouse.
COleControl::ReleaseDC Libera el contexto del dispositivo de visualización de un contenedor de un control sin ventanas.
COleControl::ReparentControlWindow Restablece el elemento primario de la ventana de control.
COleControl::ResetStockProps Inicializa las propiedades del stock COleControl en sus valores predeterminados.
COleControl::ResetVersion Inicializa el número de versión en un valor determinado.
COleControl::ScrollWindow Permite a un control sin ventana desplazar un área dentro de su imagen activa en la pantalla.
COleControl::SelectFontObject Selecciona una propiedad Font personalizada en un contexto de dispositivo.
COleControl::SelectStockFont Selecciona la propiedad Font del stock personalizada en un contexto de dispositivo.
COleControl::SerializeExtent Serializa o inicializa el espacio para mostrar del control.
COleControl::SerializeStockProps Serializa o inicializa las propiedades del stock COleControl.
COleControl::SerializeVersion Serializa o inicializa la información de versión del control.
COleControl::SetAppearance Establece el valor de la propiedad Appearance del stock.
COleControl::SetBackColor Establece el valor de la propiedad BackColor del stock.
COleControl::SetBorderStyle Establece el valor de la propiedad BorderStyle del stock.
COleControl::SetCapture Hace que la ventana contenedora del control tome posesión de la captura del mouse en nombre del control.
COleControl::SetControlSize Establece la posición y el tamaño del control OLE.
COleControl::SetEnabled Establece el valor de la propiedad Enabled del stock.
COleControl::SetFocus Hace que la ventana contenedora del control tome posesión del foco de entrada en nombre del control.
COleControl::SetFont Establece el valor de la propiedad Font del stock.
COleControl::SetForeColor Establece el valor de la propiedad ForeColor del stock.
COleControl::SetInitialSize Establece el tamaño de un control OLE cuando se muestra por primera vez en un contenedor.
COleControl::SetModifiedFlag Cambia el estado modificado de un control.
COleControl::SetNotPermitted Indica que se ha producido un error en una solicitud de edición.
COleControl::SetNotSupported Impide la modificación del valor de la propiedad de un control por parte del usuario.
COleControl::SetRectInContainer Establece el rectángulo del control relativo con su contenedor.
COleControl::SetText Establece el valor de la propiedad Text o Caption del stock.
COleControl::ThrowError Indica que se ha producido un error en un control OLE.
COleControl::TransformCoords Transforma los valores de coordenadas entre un contenedor y el control.
COleControl::TranslateColor Convierte un valor de OLE_COLOR en un valor COLORREF.
COleControl::WillAmbientsBeValidDuringLoad Determina si las propiedades de ambiente estarán disponibles la próxima vez que se cargue el control.
COleControl::WindowProc Proporciona un procedimiento de Windows para un objeto COleControl.

Métodos protegidos

Nombre Descripción
COleControl::DrawContent Lo llama el marco cuando es necesario actualizar la apariencia del control.
COleControl::DrawMetafile Lo llama el marco cuando se usa el contexto de dispositivo del metarchivo.
COleControl::IsInvokeAllowed Habilita la invocación de métodos de automatización.
COleControl::SetInitialDataFormats Lo llama el marco para inicializar la lista de formatos de datos admitidos por el control.

Comentarios

Esta clase, que se deriva de CWnd, hereda toda la funcionalidad de un objeto de ventana de Windows más la funcionalidad adicional específica de OLE, como la activación de eventos y la capacidad de admitir métodos y propiedades.

Los controles OLE se pueden insertar en aplicaciones del contenedor OLE y comunicarse con el contenedor mediante un sistema bidireccional de activación de eventos y exposición de métodos y propiedades al contenedor. Tenga en cuenta que los contenedores OLE estándar solo admiten la funcionalidad básica de un control OLE. No pueden admitir las características extendidas de un control OLE. La activación de eventos se produce cuando se envían eventos al contenedor como resultado de determinadas acciones que se realizan en el control. A su vez, el contenedor se comunica con el control mediante un conjunto expuesto de métodos y propiedades análogo a las funciones miembro y a los miembros de datos de una clase C++. Este enfoque permite al desarrollador controlar la apariencia del control y notificar al contenedor cuando se producen ciertas acciones.

Controles sin ventana

Los controles OLE se pueden usar en contexto activo sin una ventana. Los controles sin ventanas tienen ventajas significativas:

  • Los controles sin ventanas pueden ser transparentes y no rectangulares

  • Los controles sin ventanas reducen el tamaño de la instancia y el tiempo de creación del objeto

Los controles no necesitan una ventana. Los servicios que ofrece una ventana se pueden proporcionar fácilmente a través de una sola ventana compartida (normalmente del contenedor) y un poco de código de envío. Tener una ventana es sobre todo una complicación innecesaria en el objeto.

Cuando se usa la activación sin ventana, el contenedor (que sí tiene una ventana) es responsable de proporcionar servicios que, de lo contrario, habrían sido proporcionados por la propia ventana del control. Por ejemplo, si el control necesita consultar el foco del teclado, consultar la captura del mouse u obtener un contexto del dispositivo, el contenedor administra estas operaciones. Las funciones miembro de operación COleControl sin ventana invocan estas operaciones en el contenedor.

Cuando la activación sin ventana está habilitada, el contenedor delega los mensajes de entrada en la interfaz IOleInPlaceObjectWindowless del control (una extensión de IOleInPlaceObject para la compatibilidad sin ventanas). La implementación de COleControl de esta interfaz enviará estos mensajes a través de la asignación de mensajes del control después de ajustar las coordenadas del mouse correctamente. Se pueden procesar estos mensajes igual que los mensajes normales de la ventana, al agregar las entradas correspondientes a la asignación de mensajes.

En un control sin ventanas, siempre se debe usar las funciones miembro COleControl en lugar de las funciones miembro correspondientes CWnd o sus funciones API de Windows relacionadas.

Los objetos de control OLE también pueden crear una ventana solo cuando se activan, pero la cantidad de trabajo necesaria para la transición inactiva-activa aumenta y la velocidad de la transición disminuye. Hay casos en los que esto es un problema: por ejemplo, considere una cuadrícula de cuadros de texto. Al desplazarse hacia arriba y hacia abajo por la columna, cada control debe activarse en contexto y después desactivarse. La velocidad de la transición inactiva/activa afectará directamente a la velocidad de desplazamiento.

Para obtener más información sobre el desarrollo de un marco de control OLE, consulte los artículos Controles MFC ActiveX y Resumen: Creación de un programa de control MFC ActiveX. Para obtener información sobre cómo optimizar los controles OLE, incluidos los controles sin ventanas y sin parpadeo, consulte Controles ActiveX de MFC: Optimización.

Jerarquía de herencia

CObject

CCmdTarget

CWnd

COleControl

Requisitos

Encabezado: afxctl.h

COleControl::AmbientBackColor

Devuelve el valor de la propiedad BackColor del ambiente.

OLE_COLOR AmbientBackColor();

Valor devuelto

Valor actual de la propiedad de ambiente BackColor del contenedor, si existe. Si no se admite la propiedad, esta función devuelve el color de fondo de Windows definido por el sistema.

Comentarios

La propiedad de ambiente BackColor está disponible para todos los controles y está definida por el contenedor. Tenga en cuenta que el contenedor no es necesario para admitir esta propiedad.

COleControl::AmbientDisplayName

El nombre que el contenedor ha asignado al control se puede usar en los mensajes de error que se muestran al usuario.

CString AmbientDisplayName();

Valor devuelto

Nombre del control OLE. El valor predeterminado es una cadena de longitud cero.

Comentarios

Tenga en cuenta que el contenedor no es necesario para admitir esta propiedad.

COleControl::AmbientFont

Devuelve el valor de la propiedad Font del ambiente.

LPFONTDISP AmbientFont();

Valor devuelto

Puntero a la interfaz de distribución de fuentes de ambiente del contenedor. El valor predeterminado es NULL. Si la devolución no es igual a NULL, es responsable de liberar la fuente a llamar a su función miembro IUnknown::Release.

Comentarios

La propiedad de ambiente Font se define mediante el contenedor y está disponible para todos los controles. Tenga en cuenta que el contenedor no es necesario para admitir esta propiedad.

COleControl::AmbientForeColor

Devuelve el valor de la propiedad Fore del ambiente.

OLE_COLOR AmbientForeColor();

Valor devuelto

Valor actual de la propiedad de ambiente ForeColor del contenedor, si existe. Si no se admite, esta función devuelve el color de texto de Windows definido por el sistema.

Comentarios

La propiedad de ambiente ForeColor está disponible para todos los controles y está definida por el contenedor. Tenga en cuenta que el contenedor no es necesario para admitir esta propiedad.

COleControl::AmbientLocaleID

Devuelve el identificador de configuración regional del contenedor.

LCID AmbientLocaleID();

Valor devuelto

Valor de la propiedad LocaleID del contenedor, si existe. Si no se admite esta propiedad, esta función devuelve 0.

Comentarios

El control puede usar LocaleID para adaptar su interfaz de usuario para las configuraciones regionales específicas. Tenga en cuenta que el contenedor no es necesario para admitir esta propiedad.

COleControl::AmbientAppearance

Recupera la configuración de apariencia actual del objeto de control.

short AmbientAppearance();

Valor devuelto

La apariencia del control:

  • 0 Apariencia plana

  • 1 Apariencia 3D

Comentarios

Llame a esta función para recuperar el valor actual de la propiedad DISPID_AMBIENT_APPEARANCE para el control.

COleControl::AmbientScaleUnits

Devuelve el tipo de unidades usadas por el contenedor.

CString AmbientScaleUnits();

Valor devuelto

Cadena que contiene las ScaleUnits de ambiente del contenedor. Si no se admite esta propiedad, esta función devuelve una cadena de longitud 0.

Comentarios

La propiedad de ambiente ScaleUnits del contenedor se puede usar para mostrar posiciones o dimensiones etiquetadas con la unidad elegida, como twips o centímetros. Tenga en cuenta que el contenedor no es necesario para admitir esta propiedad.

COleControl::AmbientShowGrabHandles

Determina si el contenedor permite que el control muestre manipuladores de agarre para sí mismo cuando está activo.

BOOL AmbientShowGrabHandles();

Valor devuelto

Distinto de cero si se deben mostrar manipuladores de agarre; de lo contrario es 0. Si no se admite esta propiedad, esta función devuelve 0.

Comentarios

Tenga en cuenta que el contenedor no es necesario para admitir esta propiedad.

COleControl::AmbientShowHatching

Determina si el contenedor permite que el control se muestre a sí mismo con un patrón sombreado cuando la interfaz de usuario está activa.

BOOL AmbientShowHatching();

Valor devuelto

Distinto de cero si se debe mostrar el patrón sombreado; de lo contrario es 0. Si no se admite esta propiedad, esta función devuelve 0.

Comentarios

Tenga en cuenta que el contenedor no es necesario para admitir esta propiedad.

COleControl::AmbientTextAlign

Determina la alineación del texto ambiente preferida por el contenedor de controles.

short AmbientTextAlign();

Valor devuelto

Estado de la propiedad de ambiente TextAlign del contenedor. Si no se admite esta propiedad, esta función devuelve 0.

A continuación se muestra una lista de valores devueltos válidos:

Valor devuelto Significado
0 Alineación general (números a la derecha, texto a la izquierda).
1 Justificar a la izquierda
2 Centrar
3 Justificar a la derecha

Comentarios

Esta propiedad está disponible para todos los controles incrustados y está definida por el contenedor. Tenga en cuenta que el contenedor no es necesario para admitir esta propiedad.

COleControl::AmbientUIDead

Determina si el contenedor quiere que el control responda a las acciones de la interfaz de usuario.

BOOL AmbientUIDead();

Valor devuelto

Distinto a cero si el control debe responder a acciones de interfaz de usuario, de lo contrario es 0. Si no se admite esta propiedad, esta función devuelve 0.

Comentarios

Por ejemplo, un contenedor podría establecer esto en TRUE en modo de diseño.

COleControl::AmbientUserMode

Determina si el contenedor está en modo de diseño o en modo de usuario.

BOOL AmbientUserMode();

Valor devuelto

Distinto de cero si el contenedor está en modo de usuario; en caso contrario es 0 (en modo de diseño). Si no se admite esta propiedad, esta función devuelve 0.

Comentarios

Por ejemplo, un contenedor podría establecer esto en FALSE en modo de diseño.

COleControl::BoundPropertyChanged

Indica que el valor de la propiedad enlazada ha cambiado.

void BoundPropertyChanged(DISPID dispid);

Parámetros

dispid
Identificador de envío de una propiedad enlazada del control.

Comentarios

Se debe llamar a esto cada vez que el valor de la propiedad cambie, incluso en los casos en los que el cambio no se realizó a través del método Set de propiedades. Tenga en cuenta especialmente de las propiedades enlazadas que se asignan a variables miembro. Cada vez que cambie esta variable miembro, se debe llamar a BoundPropertyChanged.

COleControl::BoundPropertyRequestEdit

Solicita permiso de la interfaz IPropertyNotifySink para cambiar un valor de propiedad enlazado proporcionado por el control.

BOOL BoundPropertyRequestEdit(DISPID dispid);

Parámetros

dispid
Identificador de envío de una propiedad enlazada del control.

Valor devuelto

Distinto de cero si se permite el cambio; de lo contrario es 0. El valor predeterminado es distinto de cero.

Comentarios

Si se deniega el permiso, el control no debe permitir que el valor de la propiedad cambie. Esto se puede hacer ignorando o fallando la acción que intentó cambiar el valor de la propiedad.

COleControl::ClientToParent

Convierte las coordenadas de pPoint en coordenadas primarias.

virtual void ClientToParent(
    LPCRECT lprcBounds,
    LPPOINT pPoint) const;

Parámetros

lprcBounds
Puntero a los límites del control OLE dentro del contenedor. No el área de cliente, sino el área de todo el control, incluidos los bordes y las barras de desplazamiento.

pPoint
Puntero al punto de área de cliente OLE que se va a trasladar a las coordenadas del elemento primario (contenedor).

Comentarios

En el pPoint de entrada es relativo al origen del área cliente del control OLE (esquina superior izquierda del área cliente del control). En el pPoint de salida es relativo al origen del elemento primario (esquina superior izquierda del contenedor).

COleControl::ClipCaretRect

Ajusta un rectángulo de intercalación si está cubierto total o parcialmente mediante objetos opacos superpuestos.

BOOL ClipCaretRect(LPRECT lpRect);

Parámetros

lpRect
En la entrada, un puntero a una estructura RECT que contiene el área de intercalación que se va a ajustar. En la salida, el área de intercalación ajustada o NULL si el rectángulo de intercalación está completamente cubierto.

Valor devuelto

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

Comentarios

Un cuadro de intercalación es una línea, un bloque o un mapa de bits que normalmente indica dónde se insertarán texto o gráficos.

Un objeto sin ventanas no puede mostrar de forma segura un cuadro de intercalación sin comprobar primero si éste está parcialmente o totalmente oculto por objetos superpuestos. Para que sea posible, un objeto puede usar ClipCaretRect para ajustar el cuadro de intercalación (reducido) para asegurarse de que encaja en la región de recorte.

Los objetos que crean un cuadro de intercalación deben enviar el rectángulo de intercalación a ClipCaretRect y usar el rectángulo ajustado para el cuadro de intercalación. Si el cuadro de intercalación está completamente oculto, este método devolverá FALSE y el cuadro de intercalación no debe mostrarse en absoluto en este caso.

COleControl::COleControl

Construye un objeto COleControl.

COleControl();

Comentarios

Normalmente esta función no se llama directamente. En su lugar, el control OLE suele ser creado por su generador de clases.

COleControl::ControlInfoChanged

Llame a esta función cuando el conjunto mnemotécnico admitido por el control haya cambiado.

void ControlInfoChanged();

Comentarios

Al recibir esta notificación, el contenedor del control obtiene el nuevo conjunto mnemotécnico al realizar una llamada a IOleControl::GetControlInfo. Tenga en cuenta que el contenedor no es necesario para responder a esta notificación.

COleControl::DisplayError

Lo llama el marco después de controlar el evento de error del stock (a menos que el controlador de eventos haya suprimido la presentación del error).

virtual void DisplayError(
    SCODE scode,
    LPCTSTR lpszDescription,
    LPCTSTR lpszSource,
    LPCTSTR lpszHelpFile,
    UINT nHelpID);

Parámetros

scode
Valor de código de estado que se va a informar. Para obtener una lista completa de los posibles códigos, consulte el artículo Controles ActiveX: Temas avanzados.

lpszDescription
Descripción del error que se está notificando.

lpszSource
Nombre del módulo que genera el error (normalmente, el nombre del módulo de control OLE).

lpszHelpFile
Nombre del archivo de ayuda que contiene una descripción del error.

nHelpID
Identificador de contexto de ayuda del error que se está informando.

Comentarios

El comportamiento predeterminado muestra un cuadro de mensaje que contiene la descripción del error, contenida en lpszDescription.

Invalide esta función para personalizar cómo se muestran los errores.

COleControl::DoClick

Simula una acción de clic del mouse en el control.

void DoClick();

Comentarios

Se llamará a la función miembro reemplazable COleControl::OnClick y se desencadenará un evento Click del stock, si el control lo admite.

Esta función es compatible con la clase base COleControl como método del stock, denominado DoClick. Para obtener más información, consulte el artículo Métodos de control ActiveX.

COleControl::DoPropExchange

Lo llama el marco al cargar o almacenar un control desde una representación de almacenamiento persistente, como una secuencia o un conjunto de propiedades.

virtual void DoPropExchange(CPropExchange* pPX);

Parámetros

pPX
Puntero a un objeto CPropExchange . El marco de trabajo proporciona este objeto para establecer el contexto del intercambio de propiedades, incluida su dirección.

Comentarios

Esta función usualmente realiza llamadas a la familia de funciones PX_ para cargar o almacenar propiedades específicas definidas por el usuario de un control OLE.

Si se ha usado el Asistente de controles para crear el proyecto de control OLE, la versión invalidada de esta función serializará las propiedades del stock compatibles COleControl con una llamada a la función de clase base, COleControl::DoPropExchange. A medida que se agreguen propiedades definidas por el usuario al control OLE, se deberá modificar esta función para serializar las nuevas propiedades. Para obtener más información sobre la serialización, vea el artículo Controles ActiveX: Serializar.

COleControl::DoSuperclassPaint

Vuelve a dibujar un control OLE que se ha sido subclasificado desde un control de Windows.

void DoSuperclassPaint(
    CDC* pDC,
    const CRect& rcBounds);

Parámetros

pDC
Puntero al contexto del dispositivo del contenedor de control.

rcBounds
Área en la que se va a dibujar el control.

Comentarios

Llame a esta función para manipular correctamente la pintura de un control OLE no activo. Esta función solo debe usarse si el control OLE hace de un control de Windows una subclase y se debe llamar a en la función OnDraw del control.

Para obtener más información sobre esta función y hacer de un control de Windows una subclase, consulte el artículo Controles ActiveX: Subclasificación de un control de Windows.

COleControl::DrawContent

Lo llama el marco cuando es necesario actualizar la apariencia del control.

void DrawContent(
    CDC* pDC,
    CRect& rc);

Parámetros

pDC
Puntero al contexto de dispositivo.

Rc
Área rectangular en la que se va a dibujar.

Comentarios

Esta función llama directamente a la función reemplazable OnDraw.

COleControl::DrawMetafile

Lo llama el marco cuando se usa el contexto de dispositivo del metarchivo.

void DrawMetafile(
    CDC* pDC,
    CRect& rc);

Parámetros

pDC
Puntero al contexto del dispositivo del metarchivo.

Rc
Área rectangular en la que se va a dibujar.

COleControl::EnableSimpleFrame

Habilita la característica del marco simple para un control OLE.

void EnableSimpleFrame();

Comentarios

Esta característica permite que un control admita la contención visual de otros controles, pero no la verdadera contención OLE. Un ejemplo sería un cuadro de grupo con varios controles dentro. Estos controles no están incluidos en OLE, pero están en el mismo cuadro de grupo.

COleControl::ExchangeExtent

Serializa o inicializa el estado de la extensión del control (sus dimensiones en unidades HIMETRIC).

BOOL ExchangeExtent(CPropExchange* pPX);

Parámetros

pPX
Puntero a un objeto CPropExchange. El marco de trabajo proporciona este objeto para establecer el contexto del intercambio de propiedades, incluida su dirección.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario es 0.

Comentarios

Se llama normalmente a esta función mediante la implementación predeterminada de COleControl::DoPropExchange.

COleControl::ExchangeStockProps

Serializa o inicializa el estado de las propiedades del stock del control.

void ExchangeStockProps(CPropExchange* pPX);

Parámetros

pPX
Puntero a un objeto CPropExchange. El marco de trabajo proporciona este objeto para establecer el contexto del intercambio de propiedades, incluida su dirección.

Comentarios

Se llama normalmente a esta función mediante la implementación predeterminada de COleControl::DoPropExchange.

COleControl::ExchangeVersion

Serializa o inicializa el estado de la información de la versión de un control.

BOOL ExchangeVersion(
    CPropExchange* pPX,
    DWORD dwVersionDefault,
    BOOL bConvert = TRUE);

Parámetros

pPX
Puntero a un objeto CPropExchange . El marco de trabajo proporciona este objeto para establecer el contexto del intercambio de propiedades, incluida su dirección.

dwVersionDefault
Número de versión actual del control.

bConvert
Indica si los datos persistentes se deben convertir al formato más reciente al guardarse o mantenerse en el mismo formato que se cargó.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario es 0.

Comentarios

Normalmente, esta será la primera función a la que llama la invalidación de un control de COleControl::DoPropExchange. Al cargar, esta función lee el número de versión de los datos persistentes y establece el atributo de la versión del objeto CPropExchange en consecuencia. Al guardar, esta función escribe el número de versión de los datos persistentes.

Para obtener más información sobre la persistencia y el control de versiones, consulte el artículo Controles ActiveX: Serializar.

COleControl::FireClick

Lo llama el marco cuando se hace clic en el mouse sobre un control activo.

void FireClick();

Comentarios

Si este evento se define como un evento personalizado, se determina cuándo se desencadena el evento.

Para que se produzca un desencadenamiento automático de un evento Click, la asignación de eventos del control debe tener definido un evento Click del stock.

COleControl::FireDblClick

Lo llama el marco cuando se hace doble clic en el mouse sobre un control activo.

void FireDblClick();

Comentarios

Si este evento se define como un evento personalizado, se determina cuándo se desencadena el evento.

Para que se produzca un desencadenamiento automático de un evento DblClick, la asignación de eventos del control debe tener definido un evento DblClick del stock.

COleControl::FireError

Activa el evento error del stock.

void FireError(
    SCODE scode,
    LPCTSTR lpszDescription,
    UINT nHelpID = 0);

Parámetros

scode
Valor de código de estado que se va a informar. Para obtener una lista completa de los posibles códigos, consulte el artículo Controles ActiveX: Temas avanzados.

lpszDescription
Descripción del error que se está notificando.

nHelpID
Identificador de ayuda del error que se está informando.

Comentarios

Este evento proporciona una manera de indicar, en los lugares adecuados del código, que se ha producido un error dentro del control. A diferencia de otros eventos del stock, como Click o MouseMove, el marco nunca desencadena el error.

Para notificar un error que se produce durante una función get de propiedades, una función de conjunto de propiedades o un método de automatización, llame a COleControl::ThrowError.

La implementación del evento de error del stock de un control OLE usa un valor SCODE. Si el control usa este evento y está pensado para usarse en Visual Basic 4.0, se recibirán errores porque el valor de SCODE no se admite en Visual Basic.

Para corregirlo, cambie manualmente el parámetro SCODE en el archivo .ODL del control en un objeto long. Además, cualquier evento, método o propiedad personalizada que use un parámetro SCODE también provoca el mismo problema.

COleControl::FireEvent

Desencadena un evento definido por el usuario desde el control con cualquier número de argumentos opcionales.

void AFX_CDECL FireEvent(
    DISPID dispid,
    BYTE* pbParams,
...);

Parámetros

dispid
El valor de este parámetro se corresponde con el id. de distribución del evento que se va a activar.

pbParams
Descriptor para los tipos de parámetros del evento.

Comentarios

Normalmente, esta función no debe llamarse directamente. En su lugar, llamará a las funciones de activación de eventos en la sección de asignación de eventos de la declaración de la clase de control.

El argumento pbParams es una lista separada por espacios de VTS_. Uno o varios de estos valores, separados por espacios (no por comas), especifican la lista de parámetros de la función. Los valores posibles son los siguientes:

Símbolo Parameter type (Tipo de parámetro)
VTS_COLOR OLE_COLOR
VTS_FONT IFontDisp*
VTS_HANDLE HWND
VTS_PICTURE IPictureDisp*
VTS_OPTEXCLUSIVE OLE_OPTEXCLUSIVE*
VTS_TRISTATE OLE_TRISTATE
VTS_XPOS_HIMETRIC OLE_XPOS_HIMETRIC
VTS_YPOS_HIMETRIC OLE_YPOS_HIMETRIC
VTS_XPOS_PIXELS OLE_XPOS_PIXELS
VTS_YPOS_PIXELS OLE_YPOS_PIXELS
VTS_XSIZE_PIXELS OLE_XSIZE_PIXELS
VTS_YSIZE_PIXELS OLE_XSIZE_PIXELS
VTS_XSIZE_HIMETRIC OLE_XSIZE_HIMETRIC
VTS_YSIZE_HIMETRIC OLE_XSIZE_HIMETRIC

Nota:

Se han definido constantes variant adicionales para todos los tipos de variante, excepto VTS_FONT y VTS_PICTURE, que proporcionan un puntero a la constante de datos variant. Estas constantes se denominan mediante la convención de VTS_P<CONSTANT-NAME>. Por ejemplo, VTS_PCOLOR es un puntero a una constante VTS_COLOR.

COleControl::FireKeyDown

Lo llama el marco cuando se presiona una tecla mientras el control está activo.

void FireKeyDown(
    USHORT* pnChar,
    short nShiftState);

Parámetros

pnChar
Puntero al valor de código de la clave virtual de la tecla presionada. Para obtener una lista de códigos de tecla virtual estándar, consulte Winuser.h.

nShiftState
Contiene una combinación de las marcas de los menú siguientes:

  • SHIFT_MASK se presionó la tecla MAYÚS durante la acción.

  • CTRL_MASK se presionó la tecla CONTROL durante la acción.

  • ALT_MASK se presionó la tecla ALT durante la acción.

Comentarios

Si este evento se define como un evento personalizado, se determina cuándo se desencadena el evento.

Para que se produzca un desencadenamiento automático de un evento KeyDown, la asignación de eventos del control debe tener definido un evento KeyDown del stock.

COleControl::FireKeyPress

Lo llama el marco cuando se presiona y libera una tecla mientras el control personalizado está activo en el contenedor.

void FireKeyPress(USHORT* pnChar);

Parámetros

pnChar
Puntero al valor de carácter de la tecla presionada.

Comentarios

Si este evento se define como un evento personalizado, se determina cuándo se desencadena el evento.

El destinatario del evento puede modificar pnChar, por ejemplo, convertir todos los caracteres en minúsculas por mayúsculas. Si desea examinar el carácter modificado, invalide OnKeyPressEvent.

Para que se produzca un desencadenamiento automático de un evento KeyPress, la asignación de eventos del control debe tener definido un evento KeyPress del stock.

COleControl::FireKeyUp

Lo llama el marco cuando se libera una tecla mientras el control personalizado está activo en el contenedor.

void FireKeyUp(
    USHORT* pnChar,
    short nShiftState);

Parámetros

pnChar
Puntero al valor de código de la clave virtual de la tecla liberada. Para obtener una lista de códigos de tecla virtual estándar, consulte Winuser.h.

nShiftState
Contiene una combinación de las marcas de los menú siguientes:

  • SHIFT_MASK se presionó la tecla MAYÚS durante la acción.

  • CTRL_MASK se presionó la tecla CONTROL durante la acción.

  • ALT_MASK se presionó la tecla ALT durante la acción.

Comentarios

Si este evento se define como un evento personalizado, se determina cuándo se desencadena el evento.

Para que se produzca un desencadenamiento automático de un evento KeyUp, la asignación de eventos del control debe tener definido un evento KeyUp del stock.

COleControl::FireMouseDown

Lo llama el marco cuando se presiona un botón del mouse sobre un control personalizado activo.

void FireMouseDown(
    short nButton,
    short nShiftState,
    OLE_XPOS_PIXELS x,
    OLE_YPOS_PIXELS y);

Parámetros

nButton
Valor numérico del botón del mouse presionado. Puede contener uno de los siguientes valores:

  • LEFT_BUTTON, se presionó el botón izquierdo del mouse.

  • MIDDLE_BUTTON, se presionó el botón central del mouse.

  • RIGHT_BUTTON, se presionó el botón derecho del mouse.

nShiftState
Contiene una combinación de las marcas de los menú siguientes:

  • SHIFT_MASK se presionó la tecla MAYÚS durante la acción.

  • CTRL_MASK se presionó la tecla CONTROL durante la acción.

  • ALT_MASK se presionó la tecla ALT durante la acción.

x
Coordenada x del cursor cuando se presionó un botón del mouse. La coordenada es relativa a la esquina superior izquierda de la ventana de control.

y
Coordenada y del cursor cuando se presionó un botón del mouse. La coordenada es relativa a la esquina superior izquierda de la ventana de control.

Comentarios

Si este evento se define como un evento personalizado, se determina cuándo se desencadena el evento.

Para que se produzca un desencadenamiento automático de un evento MouseDown, la asignación de eventos del control debe tener definido un evento MouseDown del stock.

COleControl::FireMouseMove

Lo llama el marco cuando el cursor se mueve sobre un control personalizado activo.

void FireMouseMove(
    short nButton,
    short nShiftState,
    OLE_XPOS_PIXELS x,
    OLE_YPOS_PIXELS y);

Parámetros

nButton
Valor numérico de los botones del mouse presionados. Contiene una combinación de las marcas de los valores siguientes:

  • LEFT_BUTTON, se presionó el botón izquierdo del mouse durante la acción.

  • MIDDLE_BUTTON, se presionó el botón central del mouse durante la acción.

  • RIGHT_BUTTON, se presionó el botón derecho del mouse durante la acción.

nShiftState
Contiene una combinación de las marcas de los menú siguientes:

  • SHIFT_MASK se presionó la tecla MAYÚS durante la acción.

  • CTRL_MASK se presionó la tecla CONTROL durante la acción.

  • ALT_MASK se presionó la tecla ALT durante la acción.

x
Coordenada x del cursor. La coordenada es relativa a la esquina superior izquierda de la ventana de control.

y
Coordenada y del cursor. La coordenada es relativa a la esquina superior izquierda de la ventana de control.

Comentarios

Si este evento se define como un evento personalizado, se determina cuándo se desencadena el evento.

Para que se produzca un desencadenamiento automático de un evento MouseMove, la asignación de eventos del control debe tener definido un evento MouseMove del stock.

COleControl::FireMouseUp

Lo llama el marco cuando se libera un botón del mouse sobre un control personalizado activo.

void FireMouseUp(
    short nButton,
    short nShiftState,
    OLE_XPOS_PIXELS x,
    OLE_YPOS_PIXELS y);

Parámetros

nButton
Valor numérico del botón del mouse liberado. Puede tener uno de los siguientes valores:

  • LEFT_BUTTON se liberó el botón izquierdo del mouse.

  • MIDDLE_BUTTON, se liberó el botón central del mouse.

  • RIGHT_BUTTON, se liberó el botón derecho del mouse.

nShiftState
Contiene una combinación de las marcas de los menú siguientes:

  • SHIFT_MASK se presionó la tecla MAYÚS durante la acción.

  • CTRL_MASK se presionó la tecla CONTROL durante la acción.

  • ALT_MASK se presionó la tecla ALT durante la acción.

x
Coordenada x del cursor cuando se liberó un botón del mouse. La coordenada es relativa a la esquina superior izquierda de la ventana de control.

y
Coordenada y un cursor cuando se liberó un botón del mouse. La coordenada es relativa a la esquina superior izquierda de la ventana de control.

Comentarios

Si este evento se define como un evento personalizado, se determina cuándo se desencadena el evento.

Para que se produzca un desencadenamiento automático de un evento MouseUp, la asignación de eventos del control debe tener definido un evento MouseUp del stock.

COleControl::FireReadyStateChange

Desencadena un evento con el valor actual del estado de preparación del control.

void FireReadyStateChange();

Comentarios

El estado de preparación puede ser uno de los siguientes valores:

Nombre Descripción
READYSTATE_UNINITIALIZED Estado de inicialización predeterminado
READYSTATE_LOADING El control está cargando actualmente sus propiedades
READYSTATE_LOADED Se ha inicializado el control
READYSTATE_INTERACTIVE El control tiene suficientes datos para ser interactivos, pero no todos los datos asincrónicos están todavía cargados
READYSTATE_COMPLETE El control tiene todos sus datos

Use GetReadyState para determinar la preparación actual del control.

InternalSetReadyState cambia el estado de preparación al valor proporcionado y, después llama a FireReadyStateChange.

COleControl::GetActivationPolicy

Modifica el comportamiento de activación predeterminado de un control que admite la interfaz IPointerInactive.

virtual DWORD GetActivationPolicy();

Valor devuelto

Una combinación de marcas de la enumeración POINTERINACTIVE. Las marcas posibles son:

Nombre Descripción
POINTERINACTIVE_ACTIVATEONENTRY El objeto debe activarse en el lugar cuando el mouse entra en él durante una operación de movimiento del mouse.
POINTERINACTIVE_DEACTIVATEONLEAVE El objeto debe desactivarse cuando el mouse sale del objeto durante una operación de movimiento del mouse.
POINTERINACTIVE_ACTIVATEONDRAG El objeto debe activarse en el lugar cuando el mouse se arrastra sobre él durante una operación de arrastrar y colocar.

Comentarios

Cuando la interfaz IPointerInactive está habilitada, el contenedor delegará en él los mensajes WM_SETCURSOR y WM_MOUSEMOVE. La implementación de COleControl de esta interfaz enviará estos mensajes a través de la asignación de mensajes del control después de ajustar las coordenadas del mouse correctamente.

Cada vez que el contenedor recibe un mensaje de WM_SETCURSOR o WM_MOUSEMOVE con el puntero del mouse sobre un objeto inactivo que admita IPointerInactive, debe llamar a GetActivationPolicy en la interfaz y devolver marcas desde la enumeración POINTERINACTIVE.

Se pueden procesar los mensajes igual que los mensajes normales de la ventana, al agregar las entradas correspondientes a la asignación de mensajes. En los controladores, evite usar la variable miembro m_hWnd (o cualquier función miembro que la use) sin primero comprobar que su valor no es NULL.

Cualquier objeto que pretenda hacer más que establecer el cursor del mouse o activar un evento de movimiento del mouse, como proporcionar comentarios visuales especiales, debe devolver la marca POINTERINACTIVE_ACTIVATEONENTRY y dibujar los comentarios solo cuando está activo. Si el objeto devuelve esta marca, el contenedor debe activarlo inmediatamente y después reenviar el mismo mensaje que desencadenó la llamada a GetActivationPolicy.

Si se devuelven las marcas POINTERINACTIVE_ACTIVATEONENTRY y POINTERINACTIVE_DEACTIVATEONLEAVE, el objeto solo se activará cuando el mouse esté sobre el objeto. Si solo se devuelve la marca de POINTERINACTIVE_ACTIVATEONENTRY, el objeto solo se activará una vez cuando el mouse entre por primera vez en el objeto.

También puede querer que un control inactivo sea el destino de una operación OLE de arrastrar y colocar. Esto requiere la activación del control en el momento en que el usuario arrastra un objeto sobre él, de modo que la ventana del control pueda registrarse como destino de colocación. Para que se produzca la activación durante una operación de arrastre, devuelva la marca POINTERINACTIVE_ACTIVATEONDRAG:

DWORD CMyAxCtrl::GetActivationPolicy()
{
   return POINTERINACTIVE_ACTIVATEONDRAG;
}

Un contenedor no debe almacenar en caché la información comunicada por GetActivationPolicy. En su lugar, se debe llamar a este método cada vez que el mouse entre en un objeto inactivo.

Si un objeto inactivo no solicita activarse en contexto cuando el mouse entra en él, su contenedor debe enviar mensajes posteriores WM_SETCURSOR a este objeto llamando a OnInactiveSetCursor siempre que el puntero del mouse permanezca sobre el objeto.

La activación de la interfaz IPointerInactive usualmente significa que se desea que el control sea capaz de procesar los mensajes del mouse en todo momento. Para obtener este comportamiento en un contenedor que no admite la interfaz IPointerInactive, es necesario que el control esté siempre activado cuando sea visible, lo que significa que el control debe tener la marca OLEMISC_ACTIVATEWHENVISIBLE entre sus diversas marcas. Sin embargo, para evitar que esta marca tenga efecto en un contenedor que admita IPointerInactive, también se puede especificar la marca OLEMISC_IGNOREACTIVATEWHENVISIBLE:

static const DWORD BASED_CODE _dwMyOleMisc =
    OLEMISC_ACTIVATEWHENVISIBLE |
    OLEMISC_IGNOREACTIVATEWHENVISIBLE |
    OLEMISC_SETCLIENTSITEFIRST |
    OLEMISC_INSIDEOUT |
    OLEMISC_CANTLINKINSIDE |
    OLEMISC_RECOMPOSEONRESIZE;

COleControl::GetAmbientProperty

Obtiene el valor de una propiedad ambiente del contenedor.

BOOL GetAmbientProperty(
    DISPID dispid,
    VARTYPE vtProp,
    void* pvProp);

Parámetros

dwDispid
El Id. de distribución de la propiedad de ambiente deseada.

vtProp
Etiqueta de tipo variant que especifica el tipo del valor que se va a devolver en pvProp.

pvProp
Punto a la dirección de la variable que recibirá el valor de la propiedad o el valor devuelto. El tipo real de este puntero debe coincidir con el tipo especificado por vtProp.

vtProp Tipo de pvProp
VT_BOOL BOOL*
VT_BSTR CString*
VT_I2 short*
VT_I4 long*
VT_R4 float*
VT_R8 double*
VT_CY CY*
VT_COLOR OLE_COLOR*
VT_DISPATCH LPDISPATCH*
VT_FONT LPFONTDISP*

Valor devuelto

Distinto de cero si se admite la propiedad ambiente; de lo contrario es 0.

Comentarios

Si usa GetAmbientProperty para recuperar las propiedades de ambiente DisplayName y ScaleUnits, establezca vtProp en VT_BSTR y pvProp en CString*. Si va a recuperar la propiedad ambiente Font, establezca vtProp en VT_FONT y pvProp en LPFONTDISP*.

Tenga en cuenta que las funciones ya se han proporcionado para propiedades de ambiente comunes, como AmbientBackColor y AmbientFont.

COleControl::GetAppearance

Implementa la función Get de la propiedad Appearance del stock de control.

short GetAppearance ();

Valor devuelto

El valor devuelto especifica el valor de apariencia actual como un valor short (VT_I2), si se ejecuta correctamente. Este valor es cero si la apariencia del control es plana y 1 si la apariencia del control es 3D.

COleControl::GetBackColor

Implementa la función Get de la propiedad BackColor del stock de control.

OLE_COLOR GetBackColor();

Valor devuelto

El valor devuelto especifica el color de fondo actual como un valor de OLE_COLOR, si se ejecuta correctamente. Este valor se puede traducir a un valor COLORREF con una llamada a TranslateColor.

COleControl::GetBorderStyle

Implementa la función Get de la propiedad BorderStyle del stock de control.

short GetBorderStyle();

Valor devuelto

1 si el control tiene un borde normal; 0 si el control no tiene borde.

COleControl::GetCapture

Determina si el objeto COleControl tiene la captura del mouse.

CWnd* GetCapture();

Valor devuelto

Si el control está activado y sin ventanas, devuelve this si el control actualmente tiene la captura del mouse (según lo determinado por el contenedor del control) o NULL si no tiene la captura.

De lo contrario, devuelve el objeto CWnd que tiene la captura del mouse (igual que CWnd::GetCapture).

Comentarios

Un control sin ventana activado recibe la captura del mouse cuando se llama a SetCapture.

COleControl::GetClassID

Lo llama el marco para recuperar el id. de clase OLE del control.

virtual HRESULT GetClassID(LPCLSID pclsid) = 0;

Parámetros

pclsid
Puntero a la ubicación del id. de clase.

Valor devuelto

Distinto de cero si la llamada no se realizó correctamente; de lo contrario es 0.

Comentarios

Normalmente se implementa mediante el IMPLEMENT_OLECREATE_EX.

COleControl::GetClientOffset

Recupera la diferencia entre la esquina superior izquierda del área rectangular del control y la esquina superior izquierda de su área de cliente.

virtual void GetClientOffset(long* pdxOffset, long* pdyOffset) const;

Parámetros

pdxOffset
Puntero al desplazamiento horizontal del área de cliente del control OLE.

pdyOffset
Puntero al desplazamiento vertical del área de cliente del control OLE.

Comentarios

El control OLE tiene un área rectangular dentro de su contenedor. El área cliente del control es el área de control que excluye los bordes y las barras de desplazamiento. El desplazamiento recuperado por GetClientOffset es la diferencia entre la esquina superior izquierda del área rectangular del control y la esquina superior izquierda de su área de cliente. Si su control tiene elementos que no son clientes, aparte de los bordes y las barras de desplazamiento estándar, invalide esta función miembro para especificar el desplazamiento.

COleControl::GetClientRect

Recupera el tamaño del área de cliente del control.

virtual void GetClientRect(LPRECT lpRect) const;

Parámetros

lpRect
Puntero a una estructura RECT que contiene las dimensiones del área cliente del control sin ventanas; es decir, el tamaño del control menos los bordes de ventana, los marcos, las barras de desplazamiento, etc. El parámetro lpRect indica el tamaño del rectángulo del cliente de control, no su posición.

COleControl::GetClientSite

Consulta a un objeto para el puntero a su sitio cliente actual dentro de su contenedor.

LPOLECLIENTSITE GetClientSite();

Valor devuelto

Puntero al sitio del cliente actual del control en su contenedor.

Comentarios

El puntero devuelto apunta a una instancia de IOleClientSite. La interfaz IOleClientSite, implementada por contenedores, es la vista del objeto de su contexto: donde está anclada en el documento, donde obtiene su almacenamiento, interfaz de usuario y otros recursos.

COleControl::GetControlFlags

Recupera la configuración de la marca de control.

virtual DWORD GetControlFlags();

Valor devuelto

Combinación de ORed de las marcas de la enumeración ControlFlags:

enum ControlFlags {
    fastBeginPaint = 0x0001,
    clipPaintDC = 0x0002,
    pointerInactive = 0x0004,
    noFlickerActivate = 0x0008,
    windowlessActivate = 0x0010,
    canOptimizeDraw = 0x0020,
    };

Comentarios

De forma predeterminada, GetControlFlags devuelve fastBeginPaint | clipPaintDC.

Nombre Descripción
fastBeginPaint Si se establece, usa una función begin-paint adaptada para controles OLE en lugar de la API BeginPaint (establecida de forma predeterminada).
clipPaintDC Si no se establece, deshabilita la llamada a IntersectClipRect realizada por COleControl y obtiene una pequeña ventaja de velocidad. Si usa la activación sin ventanas, la marca no tiene ningún efecto.
pointerInactive Si se establece, proporciona interacción del mouse mientras el control está inactivo habilitando la implementación de COleControl de la interfaz IPointerInactive, que está deshabilitada de forma predeterminada.
noFlickerActivate Si se establece, elimina las operaciones de dibujo adicionales y el parpadeo visual que las acompaña. Use cuando el control se dibuje de forma idéntica en los estados inactivos y activos. Si usa la activación sin ventanas, la marca no tiene ningún efecto.
windowlessActivate Si se establece, indica que el control usa la activación sin ventanas.
canOptimizeDraw Si se establece, indica que el control realizará un dibujo optimizado, si el contenedor lo admite.

Para obtener más información sobre GetControlFlags y otras optimizaciones de controles OLE, consulte Controles ActiveX: Optimización.

COleControl::GetControlSize

Recupera el tamaño de la ventana de control OLE.

void GetControlSize(
    int* pcx,
    int* pcy);

Parámetros

pcx
Especifica el ancho del control, en píxeles.

pcy
Especifica la altura del control, en píxeles.

Comentarios

Tenga en cuenta que todas las coordenadas de las ventanas de control son relativas a la esquina superior izquierda del control.

COleControl::GetDC

Permite que un objeto sin ventanas obtenga un contexto de dispositivo de pantalla (o compatible) de su contenedor.

CDC* GetDC(
    LPCRECT lprcRect = NULL,
    DWORD dwFlags = OLEDC_PAINTBKGND);

Parámetros

lprcRect
Puntero al rectángulo que el control sin ventana desea volver a dibujar, en coordenadas del cliente del control. NULL significa la extensión del objeto completo.

dwFlags
Atributos de dibujo del contexto del dispositivo. Las opciones son:

  • OLEDC_NODRAW indica que el objeto no usará el contexto del dispositivo para realizar ningún dibujo, sino simplemente para obtener información sobre el dispositivo de pantalla. El contenedor simplemente debe pasar el DC de la ventana sin más procesamiento.

  • OLEDC_PAINTBKGND solicita que el contenedor pinte el fondo antes de devolver el controlador de dominio. Un objeto debe usar esta marca si solicita un controlador de dominio para volver a dibujar un área con fondo transparente.

  • OLEDC_OFFSCREEN informa al contenedor de que el objeto desea representar en un mapa de bits fuera de pantalla que se debe copiar en la pantalla. Un objeto debe usar esta marca cuando la operación de dibujo que está a punto de realizar genera una gran cantidad de parpadeo. El contenedor es libre de respetar esta solicitud o no. Sin embargo, si no se establece esta marca, el contenedor debe devolver un DC en la pantalla. Esto permite a los objetos realizar operaciones de pantalla directas, como mostrar una selección (a través de una operación XOR).

Valor devuelto

Puntero al contexto del dispositivo de visualización para el área cliente del contenedor CWnd si se ejecuta correctamente; de lo contrario, el valor devuelto es NULL. El contexto del dispositivo de visualización se puede usar en funciones GDI posteriores para dibujar en el área cliente de la ventana del contenedor.

Comentarios

Se debe llamar a la función miembro ReleaseDC para liberar el contexto después de pintar. Al llamar a GetDC, los objetos pasan el rectángulo que desean dibujar en sus propias coordenadas de cliente. GetDC convierte estas en coordenadas del área cliente del contenedor. El objeto no debe solicitar un rectángulo de dibujo deseado mayor que su propio rectángulo de área de cliente, cuyo tamaño se puede recuperar con GetClientRect. Esto evita que los objetos se dibujen inadvertidamente donde no deben.

COleControl::GetEnabled

Implementa la función Get de la propiedad Enabled del stock de control.

BOOL GetEnabled();

Valor devuelto

Distinto de cero si el control está habilitado; de lo contrario es 0.

COleControl::GetExtendedControl

Obtiene un puntero a un objeto mantenido por el contenedor que representa el control con un conjunto extendido de propiedades.

LPDISPATCH GetExtendedControl();

Valor devuelto

Puntero al objeto de control extendido del contenedor. Si no hay ningún objeto disponible, el valor es NULL.

Este objeto se puede manipular a través de su interfaz IDispatch. También puede usar QueryInterface para obtener otras interfaces disponibles proporcionadas por el objeto. Sin embargo, el objeto no es necesario para admitir un conjunto específico de interfaces. Tenga en cuenta que depender de las características específicas del objeto de control extendido de un contenedor limita la portabilidad de su control a otros contenedores arbitrarios.

Comentarios

La función que llama a esta función es responsable de liberar el puntero cuando termine con el objeto. Tenga en cuenta que el contenedor no es necesario para admitir este objeto.

COleControl::GetFocus

Determina si el objeto COleControl tiene el foco.

CWnd* GetFocus();

Valor devuelto

Si el control está activado y sin ventanas, devuelve this si el control actualmente tiene el foco del teclado (según lo determinado por el contenedor del control) o NULL si no tiene el foco.

De lo contrario, devuelve el objeto CWnd que tiene el foco (igual que CWnd::GetFocus).

Comentarios

Un control sin ventana activado recibe el foco cuando se llama a SetFocus.

COleControl::GetFont

Implementa la función Get de la propiedad Font del stock.

LPFONTDISP GetFont();

Valor devuelto

Puntero a la interfaz de distribución de fuentes de la propiedad Font del stock de control.

Comentarios

Tenga en cuenta que el autor de la llamada debe liberar el objeto cuando termine. Dentro de la implementación del control, use InternalGetFont para acceder al objeto Font del stock de control. Para obtener más información sobre el uso de fuente de su control, consulte el artículo Controles ActiveX: Usar fuentes en un control ActiveX.

COleControl::GetFontTextMetrics

Mide las métricas de texto de cualquier objeto CFontHolder propiedad del control.

void GetFontTextMetrics(
    LPTEXTMETRIC lptm,
    CFontHolder& fontHolder);

Parámetros

lptm
Puntero a una estructura TEXTMETRIC.

fontHolder
Referencia a un objeto CFontHolder.

Comentarios

Esta fuente se puede seleccionar con la función COleControl::SelectFontObject. GetFontTextMetrics inicializará la estructura TEXTMETRIC a la que apunta lptm con información de métricas válida sobre la fuente de fontHolder si se ejecuta correctamente o rellenará la estructura con ceros si no se realiza correctamente. Debe usar esta función en lugar de GetTextMetrics al pintar el control porque los controles, como cualquier otro objeto OLE incrustado, pueden ser necesarios para representarse en un metarchivo.

La estructura TEXTMETRIC de la fuente predeterminada se actualiza cuando se llama a la función SelectFontObject. Solo se debe llamar a GetFontTextMetrics después de seleccionar la propiedad Font del stock para asegurarse de que la información que proporciona es válida.

COleControl::GetForeColor

Implementa la función Get de la propiedad ForeColor del stock.

OLE_COLOR GetForeColor();

Valor devuelto

El valor devuelto especifica el color de primer plano actual como un valor de OLE_COLOR, si se ejecuta correctamente. Este valor se puede trasladar a un valor COLORREF con una llamada a TranslateColor.

COleControl::GetHwnd

Implementa la función Get de la propiedad hWnd del stock.

OLE_HANDLE GetHwnd();

Valor devuelto

Manipulador de la ventana del control OLE, si existe; en caso contrario es NULL.

COleControl::GetMessageString

Llamado por el marco para obtener una cadena corta que describa el propósito del elemento del menú identificado por nID.

virtual void GetMessageString(
    UINT nID,
    CString& rMessage) const;

Parámetros

Nid
Id. de elemento de menú.

rMessage
Referencia a un objeto CString a través del cual se devolverá una cadena.

Comentarios

Se puede usar para obtener un mensaje para mostrarlo en una barra de estado mientras el elemento de menú está resaltado. La implementación predeterminada intenta cargar un recurso de cadena identificado por nID.

COleControl::GetNotSupported

Impide el acceso al valor de la propiedad de un control por parte del usuario.

void GetNotSupported();

Comentarios

Llame a esta función en lugar de la función Get de cualquier propiedad en la que no se admita la recuperación de la propiedad por parte del usuario del control. Un ejemplo sería una propiedad que es de solo escritura.

COleControl::GetReadyState

Devuelve el estado de preparación del control.

long GetReadyState();

Valor devuelto

El estado de preparación del control, uno de los siguientes valores:

Nombre Descripción
READYSTATE_UNINITIALIZED Estado de inicialización predeterminado
READYSTATE_LOADING El control está cargando actualmente sus propiedades
READYSTATE_LOADED Se ha inicializado el control
READYSTATE_INTERACTIVE El control tiene suficientes datos para ser interactivos, pero no todos los datos asincrónicos están todavía cargados
READYSTATE_COMPLETE El control tiene todos sus datos

Comentarios

La mayoría de los controles simples nunca necesitan diferenciar entre LOADED e INTERACTIVE. Sin embargo, es posible que los controles que admiten las propiedades de ruta de acceso de datos no estén listos para ser interactivos hasta que al menos algunos datos se reciban de forma asincrónica. Un control debe intentar volverse interactivo lo antes posible.

COleControl::GetRectInContainer

Obtiene las coordenadas del rectángulo del control en relación con el contenedor, expresado en unidades del dispositivo.

BOOL GetRectInContainer(LPRECT lpRect);

Parámetros

lpRect
Puntero a la estructura del rectángulo en la que se copiarán las coordenadas del control.

Valor devuelto

Distinto de cero si el elemento control está activo en el entorno local; de lo contrario es 0.

Comentarios

El rectángulo solo es válido si el control está activo en el lugar.

COleControl::GetStockTextMetrics

Mide las métricas de texto de la propiedad Font del stock de control, que se puede seleccionar con la función SelectStockFont.

void GetStockTextMetrics(LPTEXTMETRIC lptm);

Parámetros

lptm
Puntero a una estructura TEXTMETRIC.

Comentarios

La función GetStockTextMetrics inicializará la estructura TEXTMETRIC a la que apunta lptm con información de métricas válida si se ejecuta correctamente o rellenará la estructura con ceros si no se realiza correctamente. Use esta función en lugar de GetTextMetrics al pintar el control porque los controles, como cualquier otro objeto OLE incrustado, pueden ser necesarios para representarse en un metarchivo.

La estructura TEXTMETRIC de la fuente predeterminada se actualiza cuando se llama a la función SelectStockFont. Solo se debe llamar a esta función después de seleccionar la fuente del stock para asegurarse de que la información que proporciona es válida.

COleControl::GetText

Implementa la función Get de la propiedad Text o Caption del stock.

BSTR GetText();

Valor devuelto

Valor actual de la cadena de texto del control o una cadena de longitud cero si no hay ninguna cadena presente.

Nota:

Para obtener más información sobre el tipo de datos BSTR, consulte Tipos de datos en la sección Macros y Globales.

Comentarios

Tenga en cuenta que el autor de la llamada de esta función debe llamar a SysFreeString en la cadena devuelta para liberar el recurso. Dentro de la implementación del control, use InternalGetText para acceder a la propiedad Text o Caption del stock de control.

COleControl::GetWindowlessDropTarget

Invalide GetWindowlessDropTarget cuando desee que un control sin ventana sea el destino de una operación OLE de arrastrar y colocar.

virtual IDropTarget* GetWindowlessDropTarget();

Valor devuelto

Puntero a la interfaz del objeto IDropTarget. Debido a que no tiene una ventana, un objeto sin ventana no puede registrar una interfaz IDropTarget. Sin embargo, para participar en el arrastrar y colocar, un objeto sin ventana todavía puede implementar la interfaz y devolverla en GetWindowlessDropTarget.

Comentarios

Normalmente, esto requeriría que la ventana del control se registre como un destino de colocación. Pero dado que el control no tiene ninguna ventana propia, el contenedor usará su propia ventana como destino de colocación. El control simplemente debe proporcionar una implementación de la interfaz IDropTarget a la que el contenedor puede delegar llamadas en el momento adecuado. Por ejemplo:

IDropTarget *CMyAxCtrl::GetWindowlessDropTarget()
{
   m_xDropTarget.AddRef();
   return &m_xDropTarget;
}

COleControl::InitializeIIDs

Informa a la clase base de los IID que usará el control.

void InitializeIIDs(
    const IID* piidPrimary,
    const IID* piidEvents);

Parámetros

piidPrimary
Puntero al id. de interfaz de la interfaz de envío principal de control.

piidEvents
Puntero al id. de interfaz de la interfaz de eventos de control.

Comentarios

Llame a esta función en el constructor del control para informar a la clase base de los identificadores de interfaz que el control usará.

COleControl::InternalGetFont

Obtiene acceso a la propiedad Font del stock del control

CFontHolder& InternalGetFont();

Valor devuelto

Referencia a un objeto CFontHolder que contiene el objeto Font del stock.

COleControl::InternalGetText

Accede a la propiedad Text o Caption del stock del control.

const CString& InternalGetText();

Valor devuelto

Referencia a la cadena de texto de control.

COleControl::InternalSetReadyState

Establece el estado de preparación del control.

void InternalSetReadyState(long lNewReadyState);

Parámetros

lNewReadyState
El estado de preparación para establecer el control, uno de los siguientes valores:

Nombre Descripción
READYSTATE_UNINITIALIZED Estado de inicialización predeterminado
READYSTATE_LOADING El control está cargando actualmente sus propiedades
READYSTATE_LOADED Se ha inicializado el control
READYSTATE_INTERACTIVE El control tiene suficientes datos para ser interactivos, pero no todos los datos asincrónicos están todavía cargados
READYSTATE_COMPLETE El control tiene todos sus datos

Comentarios

La mayoría de los controles simples nunca necesitan diferenciar entre LOADED e INTERACTIVE. Sin embargo, es posible que los controles que admiten las propiedades de ruta de acceso de datos no estén listos para ser interactivos hasta que al menos algunos datos se reciban de forma asincrónica. Un control debe intentar volverse interactivo lo antes posible.

COleControl::InvalidateControl

Obliga al control a dibujarse nuevamente.

void InvalidateControl(
    LPCRECT lpRect = NULL,
    BOOL bErase = TRUE);

Parámetros

lpRect
Puntero a la región del control que se va a invalidar.

bErase
Especifica si el fondo dentro de la región de actualización debe borrarse cuando se procesa la actualización de la región.

Comentarios

Si lpRect tiene un valor NULL, se volverá a dibujar todo el control. Si lpRect no es NULL, se indica la parte del rectángulo del control que se va a invalidar. En los casos en donde el control no tiene ninguna ventana o actualmente no está activo, se omite el rectángulo y se realiza una llamada a la función miembro IAdviseSink::OnViewChange del sitio cliente. Use esta función en lugar de CWnd::InvalidateRect o InvalidateRect.

COleControl::InvalidateRgn

Invalida el área de cliente de la ventana del contenedor dentro de la región especificada.

void InvalidateRgn(CRgn* pRgn, BOOL bErase = TRUE);

Parámetros

pRgn
Puntero a un objeto CRgn que identifica la región de presentación del objeto OLE que se va a invalidar, en coordenadas cliente de la ventana contenedora. Si este parámetro es NULL, la extensión es todo el objeto.

bErase
Especifica si el fondo de la región de actualización debe borrarse. Si es TRUE, se borra el fondo. Si es FALSE, el fondo permanece sin cambios.

Comentarios

Se puede usar para volver a dibujar controles sin ventanas dentro del contenedor. La región invalidada, junto con todas las demás áreas de la región de actualización, se marca para pintar cuando se envía el mensaje WM_PAINT.

Si bErase es TRUE para cualquier parte de la región de actualización, se borra el fondo de toda la región, no solo en la parte especificada.

COleControl::IsConvertingVBX

Permite la carga especializada de un control OLE.

BOOL IsConvertingVBX();

Valor devuelto

Distinto de cero si el control se está convirtiendo; de lo contrario es 0.

Comentarios

Al convertir un formulario que usa controles VBX en uno que use controles OLE, es posible que se requiera código de carga especial para los controles OLE. Por ejemplo, si va a cargar una instancia del control OLE, es posible que tenga que llamar a PX_Font en su DoPropExchange:

PX_Font(pPX, _T("Font"), *m_pMyFont, &DefaultFont);

Sin embargo, los controles VBX no tenían un objeto Font; cada propiedad de fuente se guardó individualmente. En este caso, usaría IsConvertingVBX para distinguir entre estos dos casos:

if (!IsConvertingVBX())
{
   PX_Font(pPX, _T("Font"), *m_pMyFont, &DefaultFont);
}
else
{
   PX_String(pPX, _T("FontName"), tempString, DefaultName);
   m_pMyFont->m_pFont->put_Name(tempString.AllocSysString());
   PX_Bool(pPX, _T("FontUnderline"), tempBool, DefaultValue);
   m_pMyFont->m_pFont->put_Underline(tempBool);
}

Otro caso sería si el control VBX guardó datos binarios propietarios (en su controlador de mensajes VBM_SAVEPROPERTY) y el control OLE guarda sus datos binarios en un formato diferente. Si quiere que el control OLE sea compatible con versiones anteriores con el control VBX, podría leer tanto los formatos antiguos como los nuevos mediante la función IsConvertingVBX, para distinguir si se carga el control VBX o el control OLE.

En la función del control DoPropExchange, puede comprobar esta condición y, si es true, ejecute el código de carga específico para esta conversión (como los ejemplos anteriores). Si el control no se está convirtiendo, puede ejecutar el código de carga normal. Esta capacidad solo es aplicable a los controles que se convierten desde los homólogos de VBX.

COleControl::IsInvokeAllowed

Habilita la invocación de métodos de automatización.

BOOL IsInvokeAllowed(DISPID dispid);

Valor devuelto

Es distinto de cero si se ha inicializado el control; en caso contrario es 0.

Comentarios

La implementación del marco de IDispatch::Invoke llama a IsInvokeAllowed para determinar si se puede invocar una función determinada (identificada por dispid). El comportamiento predeterminado de un control OLE es permitir que los métodos de automatización se invoquen solo si se ha inicializado el control; sin embargo, IsInvokeAllowed es una función virtual y se puede invalidar si es necesario (por ejemplo, cuando el control se usa como servidor de automatización).

COleControl::IsModified

Determina si se ha modificado el estado del control.

BOOL IsModified();

Valor devuelto

Distinto de cero si el estado del control se ha modificado desde que se guardó por última vez; de lo contrario es 0.

Comentarios

El estado de un control se modifica cuando cambia el valor de una propiedad.

COleControl::IsOptimizedDraw

Determina si el contenedor admite el dibujo optimizado para la operación de dibujo actual.

BOOL IsOptimizedDraw();

Valor devuelto

TRUE si el contenedor admite el dibujo optimizado para la operación de dibujo actual, de lo contrario es FALSE.

Comentarios

Si se admite el dibujo optimizado, el control no necesita seleccionar objetos antiguos (lápices, pinceles, fuentes, etc.) en el contexto del dispositivo cuando finalice el dibujo.

COleControl::IsSubclassedControl

Lo llama el marco para determinar si el control establece subclases en un control de Windows.

virtual BOOL IsSubclassedControl();

Valor devuelto

Distinto de cero si el control está hecho una subclase; de lo contrario es 0.

Comentarios

Debe invalidar esta función y devolver TRUE si el control OLE hace de un control de Windows una subclase.

COleControl::Load

Restablece cualquier dato anterior cargado de forma asíncrona e inicia una nueva carga de la propiedad asíncrona del control.

void Load(LPCTSTR strNewPath, CDataPathProperty& prop);

Parámetros

strNewPath
Puntero a una cadena que contiene la ruta de acceso que hace referencia a la ubicación absoluta de la propiedad de control asincrónica.

prop
Objeto CDataPathProperty que implementa una propiedad de control asincrónica.

COleControl::LockInPlaceActive

Impide que el contenedor desactive el control.

BOOL LockInPlaceActive(BOOL bLock);

Parámetros

bLock
TRUE si el estado activo en el lugar del control debe ser bloqueado; FALSE si debe ser desbloqueado.

Valor devuelto

Distinto de cero si el bloqueo se ha realizado correctamente; de lo contrario es 0.

Comentarios

Tenga en cuenta que cada bloqueo del control debe emparejarse con un desbloqueo del control cuando termine. Solo debe bloquear el control durante períodos cortos, como cuando se activa un evento.

COleControl::OnAmbientPropertyChange

Lo llama el marco cuando una propiedad de ambiente del contenedor ha cambiado de valor.

virtual void OnAmbientPropertyChange(DISPID dispid);

Parámetros

dispID
Identificador de distribución de la propiedad ambiente que cambió o DISPID_UNKNOWN si han cambiado varias propiedades.

COleControl::OnAppearanceChanged

Lo llama el marco cuando el valor de la propiedad Appearance del stock ha cambiado.

virtual void OnAppearanceChanged ();

Comentarios

Invalide esta función si se desea una notificación después de que cambie esta propiedad. La implementación predeterminada llama a InvalidateControl.

COleControl::OnBackColorChanged

Lo llama el marco cuando el valor de la propiedad BackColor del stock ha cambiado.

virtual void OnBackColorChanged();

Comentarios

Invalide esta función si se desea una notificación después de que cambie esta propiedad. La implementación predeterminada llama a InvalidateControl.

COleControl::OnBorderStyleChanged

Lo llama el marco cuando el valor de la propiedad BorderStyle del stock ha cambiado.

virtual void OnBorderStyleChanged();

Comentarios

La implementación predeterminada llama a InvalidateControl.

Invalide esta función si se desea una notificación después de que cambie esta propiedad.

COleControl::OnClick

Lo llama el marco cuando se ha hecho clic en un botón del mouse o se ha invocado el método del stock DoClick.

virtual void OnClick(USHORT iButton);

Parámetros

iButton
Índice de un botón del mouse. Puede tener uno de los siguientes valores:

  • LEFT_BUTTON se hizo clic en el botón izquierdo del mouse.

  • MIDDLE_BUTTON, se hizo clic en el botón central del mouse.

  • RIGHT_BUTTON, se hizo clic en el botón derecho del mouse.

Comentarios

La implementación predeterminada llama a COleControl::FireClick.

Invalide esta función miembro para modificar o ampliar el control predeterminado.

COleControl::OnClose

Lo llama el marco cuando el contenedor ha llamado a la función IOleControl::Close del control.

virtual void OnClose(DWORD dwSaveOption);

Parámetros

dwSaveOption
Marca que indica si el objeto se debe guardar antes de cargarlo. Los valores válidos son:

  • OLECLOSE_SAVEIFDIRTY

  • OLECLOSE_NOSAVE

  • OLECLOSE_PROMPTSAVE

Comentarios

De forma predeterminada, OnClose guarda el objeto de control si se ha modificado y dwSaveOption es OLECLOSE_SAVEIFDIRTY o OLECLOSE_PROMPTSAVE.

COleControl::OnDoVerb

Lo llama el marco cuando el contenedor llama a la función miembro IOleObject::DoVerb.

virtual BOOL OnDoVerb(
    LONG iVerb,
    LPMSG lpMsg,
    HWND hWndParent,
    LPCRECT lpRect);

Parámetros

iVerb
Índice del verbo de control que se va a invocar.

lpMsg
Puntero al mensaje de Windows que provocó la invocación del verbo.

hWndParent
Manipulador de la ventana primaria del control. Si la ejecución del verbo crea una ventana (o ventanas), hWndParent debe usarse como elemento primario.

lpRect
Puntero a una estructura RECT en la que se copiarán las coordenadas del control, relativas al contenedor.

Valor devuelto

Distinto de cero si la llamada se ha realizado correctamente; de lo contrario es 0.

Comentarios

La implementación predeterminada usa las entradas de asignación de mensajes ON_OLEVERB y ON_STDOLEVERB para determinar la función adecuada que se va a invocar.

Invalide esta función para cambiar el control predeterminado del verbo.

COleControl::OnDraw

Llamado por el marco para dibujar el control OLE en el rectángulo delimitador especificado por el contexto de dispositivo especificado.

virtual void OnDraw(
    CDC* pDC,
    const CRect& rcBounds,
    const CRect& rcInvalid);

Parámetros

pDC
Contexto del dispositivo en el que se produce el dibujo.

rcBounds
Área rectangular del control, incluido el borde.

rcInvalid
Área rectangular del control que no es válida.

Comentarios

OnDraw se llama normalmente para la visualización de la pantalla, pasando un contexto del dispositivo de pantalla como pDC. El parámetro rcBounds identifica el rectángulo en el contexto del dispositivo de destino (en relación con su modo de asignación actual). El parámetro rcInvalid es el rectángulo real que no es válido. En algunos casos, será un área más pequeña que rcBounds.

COleControl::OnDrawMetafile

Llamado por el marco para dibujar el control OLE en el rectángulo delimitador especificado por el contexto de dispositivo del metarchivo especificado.

virtual void OnDrawMetafile(
    CDC* pDC,
    const CRect& rcBounds);

Parámetros

pDC
Contexto del dispositivo en el que se produce el dibujo.

rcBounds
Área rectangular del control, incluido el borde.

Comentarios

La implementación predeterminada llama a la función OnDraw.

COleControl::OnEdit

Hace que el control active la interfaz de usuario.

virtual BOOL OnEdit(
    LPMSG lpMsg,
    HWND hWndParent,
    LPCRECT lpRect);

Parámetros

lpMsg
Puntero al mensaje de Windows que invocó el verbo.

hWndParent
Identificador de la ventana primaria del control.

lpRect
Puntero al rectángulo utilizado por el control del contenedor.

Valor devuelto

Distinto de cero si el método es correcto; en caso contrario es 0.

Comentarios

Esto tiene el mismo efecto que invocar el verbo OLEIVERB_UIACTIVATE del control.

Esta función se usa normalmente como función del controlador para una entrada de asignación de mensajes de ON_OLEVERB. Esto hace que un verbo "Editar" esté disponible en el menú "Objeto" del control. Por ejemplo:

ON_OLEVERB(AFX_IDS_VERB_EDIT, OnEdit)

COleControl::OnEnabledChanged

Lo llama el marco cuando el valor de la propiedad Enabled del stock ha cambiado.

virtual void OnEnabledChanged();

Comentarios

Invalide esta función si se desea una notificación después de que cambie esta propiedad. La implementación predeterminada llama a InvalidateControl.

COleControl::OnEnumVerbs

Lo llama el marco cuando el contenedor llama a la función miembro IOleObject::EnumVerbs.

virtual BOOL OnEnumVerbs(LPENUMOLEVERB* ppenumOleVerb);

Parámetros

ppenumOleVerb
Puntero al objeto IEnumOLEVERB que enumera los verbos del control.

Valor devuelto

Distinto de cero si los verbos están disponibles; de lo contrario es 0.

Comentarios

La implementación predeterminada enumera las entradas de ON_OLEVERB en la asignación de mensajes.

Invalide esta función para cambiar la forma predeterminada de enumerar los verbos.

COleControl::OnEventAdvise

Lo llama el marco cuando un controlador de eventos está conectado o desconectado de un control OLE.

virtual void OnEventAdvise(BOOL bAdvise);

Parámetros

bAdvise
TRUE indica que un controlador de eventos se ha conectado al control. FALSE indica que un controlador de eventos se ha desconectado del control.

COleControl::OnFontChanged

Lo llama el marco cuando el valor de la propiedad Font del stock ha cambiado.

virtual void OnFontChanged();

Comentarios

La implementación predeterminada llama a COleControl::InvalidateControl. Si el control está haciendo de un control de Windows una subclase, la implementación predeterminada también envía un mensaje de WM_SETFONT a la ventana del control.

Invalide esta función si se desea una notificación después de que cambie esta propiedad.

Ejemplo

void CMyAxCtrl::OnFontChanged()
{
   // Always set it to the container's font
   if (m_MyEdit.m_hWnd != NULL)
   {
      IFontDisp *pFontDisp = NULL;
      IFont *pFont = NULL;
      HRESULT hr;

      // Get the container's FontDisp interface
      pFontDisp = AmbientFont();
      if (pFontDisp)
      {
         hr = pFontDisp->QueryInterface(IID_IFont, (LPVOID*)&pFont);
         if (FAILED(hr))
         {
            pFontDisp->Release();
            return;
         }
      }

      HFONT hFont = NULL;
      if (pFont)
      {
         pFont->get_hFont(&hFont);
         m_MyEdit.SendMessage(WM_SETFONT, (WPARAM)hFont, 0L);
      }

      pFontDisp->Release();
   }

   // Invalidate the control
   m_MyEdit.Invalidate();
   m_MyEdit.UpdateWindow();

   COleControl::OnFontChanged();
}

COleControl::OnForeColorChanged

Lo llama el marco cuando el valor de la propiedad ForeColor del stock ha cambiado.

virtual void OnForeColorChanged();

Comentarios

La implementación predeterminada llama a InvalidateControl.

Invalide esta función si se desea una notificación después de que cambie esta propiedad.

COleControl::OnFreezeEvents

Lo llama el marco después de que el contenedor llame a IOleControl::FreezeEvents.

virtual void OnFreezeEvents(BOOL bFreeze);

Parámetros

bFreeze
TRUE si el manejo de eventos del control está inmovilizado; en caso contrario, FALSE.

Comentarios

La implementación predeterminada no hace nada.

Invalide esta función si desea un comportamiento adicional cuando el control de eventos esté inmovilizado o sea movible.

COleControl::OnGetColorSet

Lo llama el marco cuando el contenedor llama a la función miembro IViewObject::GetColorSet.

virtual BOOL OnGetColorSet(
    DVTARGETDEVICE* ptd,
    HDC hicTargetDev,
    LPLOGPALETTE* ppColorSet);

Parámetros

ptd
Apunta al dispositivo de destino para el que se debe representar la imagen. Si este valor es NULL, la imagen debe representarse para un dispositivo de destino predeterminado, normalmente un dispositivo de visualización.

hicTargetDev
Especifica el contexto de información en el dispositivo de destino indicado por ptd. Este parámetro puede ser un contexto de dispositivo, pero no necesariamente. Si ptd es NULL, hicTargetDev también debe ser NULL.

ppColorSet
Puntero a la ubicación en la que se debe copiar el conjunto de colores que se usaría. Si la función no devuelve el conjunto de colores, se devuelve NULL.

Valor devuelto

Distinto de cero si se devuelve un conjunto de colores válido; de lo contrario es 0.

Comentarios

El contenedor llama a esta función para obtener todos los colores necesarios para dibujar el control OLE. El contenedor puede usar los conjuntos de colores obtenidos junto con los colores que necesita para establecer la paleta de colores general. La implementación predeterminada devuelve FALSE.

Invalide esta función para realizar cualquier procesamiento especial de esta solicitud.

COleControl::OnGetControlInfo

Lo llama el marco cuando el contenedor del control ha solicitado información sobre el control.

virtual void OnGetControlInfo(LPCONTROLINFO pControlInfo);

Parámetros

pControlInfo
Puntero a una estructura CONTROLINFO que debe rellenarse.

Comentarios

Esta información consta principalmente de una descripción de las claves mnemotécnicas del control. La implementación predeterminada rellena pControlInfo con información predeterminada.

Invalide esta función si el control necesita procesar claves mnemotécnicas.

COleControl::OnGetDisplayString

Llamado por el marco para obtener una cadena que representa el valor actual de la propiedad identificada por dispid.

virtual BOOL OnGetDisplayString(
    DISPID dispid,
    CString& strValue);

Parámetros

dispid
Identificador de envío de una propiedad del control.

strValue
Referencia a un objeto CString a través del cual se devolverá una cadena.

Valor devuelto

Distinto de cero si se ha devuelto una cadena en strValue; en caso contrario es 0.

Comentarios

Invalide esta función si el control tiene una propiedad cuyo valor no se puede convertir directamente en una cadena y desea que el valor de la propiedad se muestre en un explorador de propiedades proporcionado por el contenedor.

COleControl::OnGetInPlaceMenu

Lo llama el marco cuando se activa la interfaz de usuario del control para obtener el menú que se va a combinar en el menú existente del contenedor.

virtual HMENU OnGetInPlaceMenu();

Valor devuelto

Identificador del menú del control o NULL si el control no tiene ninguno. La implementación predeterminada devuelve NULL.

Comentarios

Para obtener más información sobre cómo combinar recursos OLE, consulte el artículo Menús y recursos (OLE).

COleControl::OnGetNaturalExtent

Lo llama el marco en respuesta a la solicitud de un contenedor IViewObjectEx::GetNaturalExtent.

virtual BOOL OnGetNaturalExtent(
    DWORD dwAspect,
    LONG lindex,
    DVTARGETDEVICE* ptd,
    HDC hicTargetDev,
    DVEXTENTINFO* pExtentInfo,
    LPSIZEL psizel);

Parámetros

dwAspect
Especifica cómo se va a representar el objeto. Las representaciones incluyen contenido, un icono, una miniatura o un documento impreso. Los valores válidos se toman de la enumeración DVASPECT o DVASPECT2.

lindex
Parte del objeto que es de interés. Actualmente, solo -1 es válido.

ptd
Apunta a la estructura DVTARGETDEVICE que define el dispositivo de destino para el que se debe devolver el tamaño del objeto.

hicTargetDev
Especifica el contexto de información para el dispositivo de destino indicado por el parámetro ptd del que el objeto puede extraer las métricas del dispositivo y probar las funciones del dispositivo. Si ptd es NULL, el objeto debe omitir el valor en el parámetro hicTargetDev.

pExtentInfo
Apunta a la estructura DVEXTENTINFO que especifica los datos de tamaño. La estructura DVEXTENTINFO es:

typedef struct tagExtentInfo
{
    UINT cb;
    DWORD dwExtentMode;
    SIZEL sizelProposed;
}   DVEXTENTINFO;

El miembro de estructura dwExtentMode puede tomar uno de los dos valores:

  • DVEXTENT_CONTENT indica el tamaño que debe tener el control para ajustarse exactamente al contenido (ajustar al tamaño)

  • DVEXTENT_INTEGRAL cuando al cambia el tamaño, pase el tamaño propuesto al control

psizel
Apunta a los datos de tamaño devueltos por el control. Los datos de dimensionamiento de tamaño devueltos se establecen en -1 para cualquier dimensión que no se haya ajustado.

Valor devuelto

Distinto de cero si devuelve o ajusta correctamente el tamaño; de lo contrario es 0.

Comentarios

Invalide esta función para devolver el tamaño de presentación del objeto más cercano al modo de tamaño y extensión propuestos en la estructura DVEXTENTINFO. La implementación predeterminada devuelve FALSE y no realiza ningún ajuste en el tamaño.

COleControl::OnGetPredefinedStrings

Lo llama el marco para obtener un conjunto de cadenas predefinidas que representan los valores posibles para una propiedad.

virtual BOOL OnGetPredefinedStrings(
    DISPID dispid,
    CStringArray* pStringArray,
    CDWordArray* pCookieArray);

Parámetros

dispid
Identificador de envío de una propiedad del control.

pStringArray
Matriz de cadenas que se va a rellenar con los valores devueltos.

pCookieArray
Matriz DWORD que se va a rellenar con los valores devueltos.

Valor devuelto

Distinto de cero si se han agregado elementos a pStringArray y pCookieArray.

Comentarios

Invalide esta función si el control tiene una propiedad con un conjunto de valores posibles que pueden representarse mediante cadenas. Para cada elemento agregado a pStringArray, se debe agregar un elemento "cookie" correspondiente a pCookieArray. Estos valores "cookie" pueden ser pasados posteriormente por el marco a la función COleControl::OnGetPredefinedValue.

COleControl::OnGetPredefinedValue

Llamado por el marco para obtener el valor correspondiente a una de las cadenas predefinidas devueltas previamente por una invalidación de COleControl::OnGetPredefinedStrings.

virtual BOOL OnGetPredefinedValue(
    DISPID dispid,
    DWORD dwCookie,
    VARIANT* lpvarOut);

Parámetros

dispid
Identificador de envío de una propiedad del control.

dwCookie
Valor de cookie devuelto previamente por una invalidación de COleControl::OnGetPredefinedStrings.

lpvarOut
Puntero a una estructura VARIANT a través de la cual se devolverá un valor de propiedad.

Valor devuelto

Distinto de cero si se ha devuelto un valor en lpvarOut; de lo contrario es 0.

COleControl::OnGetViewExtent

Lo llama el marco en respuesta a la solicitud IViewObject2::GetExtent de un contenedor.

virtual BOOL OnGetViewExtent(
    DWORD dwDrawAspect,
    LONG lindex,
    DVTARGETDEVICE* ptd,
    LPSIZEL lpsizel);

Parámetros

dwDrawAspect
DWORD que describe qué formulario o aspecto de un objeto se va a mostrar. Los valores válidos se toman de la enumeración DVASPECT o DVASPECT2.

lindex
Parte del objeto que es de interés. Actualmente, solo -1 es válido.

ptd
Apunta a la estructura DVTARGETDEVICE que define el dispositivo de destino para el que se debe devolver el tamaño del objeto.

lpsizel
Apunta a la ubicación donde se devuelve el tamaño del objeto.

Valor devuelto

Distinto de cero si la información de extensión se devuelve correctamente; de lo contrario es 0.

Comentarios

Invalide esta función si el control usa un dibujo de dos pasos y sus partes opacas, y transparentes tienen dimensiones diferentes.

COleControl::OnGetViewRect

Lo llama el marco en respuesta a la solicitud de un contenedor IViewObjectEx::GetRect.

virtual BOOL OnGetViewRect(DWORD dwAspect, LPRECTL pRect);

Parámetros

dwAspect
DWORD que describe qué formulario o aspecto de un objeto se va a mostrar. Los valores válidos se toman de la enumeración DVASPECT o DVASPECT2:

  • DVASPECT_CONTENT, rectángulo delimitador del objeto completo. Esquina superior izquierda en el origen y tamaño del objeto igual a la extensión devuelta por GetViewExtent.

  • DVASPECT_OPAQUE, objetos con una región opaca rectangular devuelve ese rectángulo. Otros fallan.

  • DVASPECT_TRANSPARENT, rectángulo que cubre todas las partes transparentes o irregulares.

pRect
Apunta a la estructura RECTL que especifica el rectángulo en el que se debe dibujar el objeto. Este parámetro controla el posicionamiento y la extensión del objeto.

Valor devuelto

Distinto de cero si el rectángulo de tamaño para el objeto se devuelve correctamente; de lo contrario es 0.

Comentarios

El tamaño del objeto se convierte mediante OnGetViewRect en un rectángulo que comienza en una posición específica (el valor predeterminado es la esquina superior izquierda de la pantalla). Invalide esta función si el control usa un dibujo de dos pasos y sus partes opacas, y transparentes tienen dimensiones diferentes.

COleControl::OnGetViewStatus

Lo llama el marco en respuesta a la solicitud de un contenedor IViewObjectEx::GetViewStatus.

virtual DWORD OnGetViewStatus();

Valor devuelto

Uno de los valores de la enumeración VIEWSTATUS si se ejecuta correctamente; de lo contrario es 0. Los valores posibles son cualquier combinación de los siguientes:

Nombre Descripción
VIEWSTATUS_OPAQUE El objeto es completamente opaco. Si no se establece este bit, el objeto contiene partes transparentes. Este bit solo se aplica a aspectos relacionados con el contenido y no a DVASPECT_ICON o DVASPECT_DOCPRINT.
VIEWSTATUS_SOLIDBKGND El objeto tiene un fondo sólido (que consta de un color sólido, no un patrón de pincel). Este bit solo es significativo si se establece VIEWSTATUS_OPAQUE y solo se aplica a aspectos relacionados con el contenido y no a DVASPECT_ICON o DVASPECT_DOCPRINT.
VIEWSTATUS_DVASPECTOPAQUE El objeto admite DVASPECT_OPAQUE. Todos los métodos IViewObjectEx que toman un aspecto de dibujo como parámetro se pueden llamar con este aspecto.
VIEWSTATUS_DVASPECTTRANSPARENT El objeto admite DVASPECT_TRANSPARENT. Todos los métodos IViewObjectEx que toman un aspecto de dibujo como parámetro se pueden llamar con este aspecto.

Comentarios

Invalide esta función si el control usa un dibujo de dos pasos. La implementación predeterminada devuelve VIEWSTATUS_OPAQUE.

COleControl::OnHideToolBars

Lo llama el marco cuando se desactiva la interfaz de usuario del control.

virtual void OnHideToolBars();

Comentarios

La implementación debe ocultar todas las barras de herramientas mostradas por OnShowToolbars.

COleControl::OnInactiveMouseMove

Lo llama el contenedor del objeto inactivo bajo el puntero del mouse al recibir un mensaje de WM_MOUSEMOVE.

virtual void OnInactiveMouseMove(
    LPCRECT lprcBounds,
    long x,
    long y,
    DWORD dwKeyState);

Parámetros

lprcBounds
Rectángulo delimitador de objetos, en coordenadas de cliente de la ventana contenedora. Indica al objeto su posición y tamaño exactos en la pantalla cuando se recibió el mensaje WM_MOUSEMOVE.

x
Coordenada x de la ubicación del mouse en coordenadas de cliente de la ventana contenedora.

y
Coordenada y de la ubicación del mouse en coordenadas de cliente de la ventana contenedora.

dwKeyState
Identifica el estado actual de las teclas modificadoras del teclado. Los valores válidos pueden ser una combinación de cualquiera de las marcas MK_CONTROL, MK_SHIFT, MK_ALT, MK_BUTTON, MK_LBUTTON, MK_MBUTTON y MK_RBUTTON.

Comentarios

Tenga en cuenta que las coordenadas cliente de la ventana (píxeles) se usan para pasar la posición del cursor del mouse. Esto se hace posible pasando también el rectángulo delimitador del objeto en el mismo sistema de coordenadas.

COleControl::OnInactiveSetCursor

Lo llama el contenedor del objeto inactivo bajo el puntero del mouse al recibir un mensaje de WM_SETCURSOR.

virtual BOOL OnInactiveSetCursor(
    LPCRECT lprcBounds,
    long x,
    long y,
    DWORD dwMouseMsg,
    BOOL bSetAlways);

Parámetros

lprcBounds
Rectángulo delimitador de objetos, en coordenadas de cliente de la ventana contenedora. Indica al objeto su posición y tamaño exactos en la pantalla cuando se recibió el mensaje WM_SETCURSOR.

x
Coordenada x de la ubicación del mouse en coordenadas de cliente de la ventana contenedora.

y
Coordenada y de la ubicación del mouse en coordenadas de cliente de la ventana contenedora.

dwMouseMsg
Identificador del mensaje del mouse para el que se produjo un WM_SETCURSOR.

bSetAlways
Especifica si el objeto debe establecer el cursor o no. Si es TRUE, el objeto debe establecer el cursor; si es FALSE, el cursor no está obligado a establecer el cursor y debe devolver S_FALSE en ese caso.

Valor devuelto

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

Comentarios

Tenga en cuenta que las coordenadas cliente de la ventana (píxeles) se usan para pasar la posición del cursor del mouse. Esto se hace posible pasando también el rectángulo delimitador del objeto en el mismo sistema de coordenadas.

COleControl::OnKeyDownEvent

Lo llama el marco después de procesar un evento KeyDown del stock.

virtual void OnKeyDownEvent(
    USHORT nChar,
    USHORT nShiftState);

Parámetros

nChar
Valor de código de la clave virtual de la tecla presionada. Para obtener una lista de códigos de tecla virtual estándar, consulte Winuser.h.

nShiftState
Contiene una combinación de las marcas de los menú siguientes:

  • SHIFT_MASK se presionó la tecla MAYÚS durante la acción.

  • CTRL_MASK se presionó la tecla CONTROL durante la acción.

  • ALT_MASK se presionó la tecla ALT durante la acción.

Comentarios

Invalide esta función si el control necesita acceso a la información de la clave después de que se haya desencadenado el evento.

COleControl::OnKeyPressEvent

Lo llama el marco después de que se haya desencadenado el evento KeyPress del stock.

virtual void OnKeyPressEvent(USHORT nChar);

Parámetros

nChar
Contiene el valor del código de la clave virtual de la tecla presionada. Para obtener una lista de códigos de tecla virtual estándar, consulte Winuser.h.

Comentarios

Tenga en cuenta que el contenedor puede haber modificado el valor nChar.

Invalide esta función si se desea una notificación después de que ocurra el evento.

COleControl::OnKeyUpEvent

Lo llama el marco después de procesar un evento KeyDown del stock.

virtual void OnKeyUpEvent(
    USHORT nChar,
    USHORT nShiftState);

Parámetros

nChar
Valor de código de la clave virtual de la tecla presionada. Para obtener una lista de códigos de tecla virtual estándar, consulte Winuser.h.

nShiftState
Contiene una combinación de las marcas de los menú siguientes:

  • SHIFT_MASK se presionó la tecla MAYÚS durante la acción.

  • CTRL_MASK se presionó la tecla CONTROL durante la acción.

  • ALT_MASK se presionó la tecla ALT durante la acción.

Comentarios

Invalide esta función si el control necesita acceso a la información de la clave después de que se haya desencadenado el evento.

COleControl::OnMapPropertyToPage

Lo llama el marco para obtener el id. de clase de una página de propiedades que implementa la edición de la propiedad especificada.

virtual BOOL OnMapPropertyToPage(
    DISPID dispid,
    LPCLSID lpclsid,
    BOOL* pbPageOptional);

Parámetros

dispid
Identificador de envío de una propiedad del control.

lpclsid
Puntero a una estructura CLSID a través de la cual se devolverá un id. de clase.

pbPageOptional
Devuelve un indicador de si el uso de la página de propiedades especificada es opcional.

Valor devuelto

Distinto de cero si se ha devuelto un identificador de clase en lpclsid; de lo contrario es 0.

Comentarios

Invalide esta función para proporcionar una forma de invocar las páginas de propiedades del control desde el explorador de propiedades del contenedor.

COleControl::OnMnemonic

Lo llama el marco cuando el contenedor ha detectado que se ha presionado una tecla mnemotécnica del control OLE.

virtual void OnMnemonic(LPMSG pMsg);

Parámetros

PMSG
Puntero al mensaje de Windows generado por la presión de una tecla mnemónica.

COleControl::OnProperties

Lo llama el marco cuando el contenedor invoca el verbo de propiedades del control.

virtual BOOL OnProperties(
    LPMSG lpMsg,
    HWND hWndParent,
    LPCRECT lpRect);

Parámetros

lpMsg
Puntero al mensaje de Windows que invocó el verbo.

hWndParent
Identificador de la ventana primaria del control.

lpRect
Puntero al rectángulo utilizado por el control del contenedor.

Valor devuelto

Distinto de cero si el método es correcto; en caso contrario es 0.

Comentarios

La implementación predeterminada muestra un cuadro de diálogo de propiedad modal.

También puede usar esta función para provocar la visualización de las páginas de propiedades del control. Realice una llamada a la función OnProperties y pase el identificador del elemento primario del control en el parámetro hWndParent. En este caso, se ignoran los valores de los parámetros lpMsg y lpRect.

COleControl::OnQueryHitPoint

Lo llama el marco en respuesta a la solicitud de un contenedor IViewObjectEx::QueryHitPoint.

virtual BOOL OnQueryHitPoint(
    DWORD dwAspect,
    LPCRECT pRectBounds,
    POINT ptlLoc,
    LONG lCloseHint,
    DWORD* pHitResult);

Parámetros

dwAspect
Especifica cómo se representa el objeto. Los valores válidos se toman de la enumeración DVASPECT o DVASPECT2.

pRectBounds
Puntero a una estructura RECT que especifica el rectángulo delimitador del área cliente de control OLE.

ptlLoc
Puntero a la estructura POINT que especifica el punto que se va a comprobar para obtener una visita. El punto se especifica en las coordenadas del área de cliente OLE.

lCloseHint
Distancia que define "cerrar" al punto comprobado para una visita.

pHitResult
Puntero al resultado de la consulta de la visita. Uno de los siguientes valores:

  • HITRESULT_OUTSIDE ptlLoc está fuera del objeto OLE y no se cierra.

  • HITRESULT_TRANSPARENT ptlLoc está dentro de los límites del objeto OLE, pero no cerca de la imagen. Por ejemplo, un punto en medio de un círculo transparente podría ser HITRESULT_TRANSPARENT.

  • HITRESULT_CLOSE ptlLoc está dentro o fuera del objeto OLE, pero lo suficientemente cerca del objeto que se debe considerar adentro. Los objetos pequeños, finos o detallados pueden usar este valor. Incluso si un punto está afuera del rectángulo delimitador de un objeto, puede que siga estando cerca (esto es necesario para alcanzar objetos pequeños).

  • HITRESULT_HIT ptlLoc está dentro de la imagen del objeto.

Valor devuelto

Distinto de cero si se devuelve correctamente una línea ejecutada de aciertos; de lo contrario es 0. Un visita es una superposición con el área de presentación del control OLE.

Comentarios

Consulta si el rectángulo de presentación de un objeto se superpone al punto especificado (alcanza el punto). QueryHitPoint se puede invalidar para probar las visitas de los objetos no rectangulares.

COleControl::OnQueryHitRect

Lo llama el marco en respuesta a la solicitud de un contenedor IViewObjectEx::QueryHitRect.

virtual BOOL OnQueryHitRect(
    DWORD dwAspect,
    LPCRECT pRectBounds,
    LPCRECT prcLoc,
    LONG lCloseHint,
    DWORD* pHitResult);

Parámetros

dwAspect
Especifica cómo se va a representar el objeto. Los valores válidos se toman de la enumeración DVASPECT o DVASPECT2.

pRectBounds
Puntero a una estructura RECT que especifica el rectángulo delimitador del área cliente de control OLE.

prcLoc
Puntero a la estructura RECT que especifica el rectángulo que se va a comprobar para obtener una visita (superposición con el rectángulo de objeto), en relación con la esquina superior izquierda del objeto.

lCloseHint
No utilizado.

pHitResult
Puntero al resultado de la consulta de la visita. Uno de los siguientes valores:

  • HITRESULT_OUTSIDE no hay ningún punto en el rectángulo alcanzado por el objeto OLE.

  • HITRESULT_HIT al menos un punto en el rectángulo sería una visita en el objeto.

Valor devuelto

Distinto de cero si se devuelve correctamente una línea ejecutada de aciertos; de lo contrario es 0.

Comentarios

Consulta si el rectángulo de visualización de un objeto se superpone a cualquier punto del rectángulo especificado (alcanza el rectángulo). QueryHitRect se puede invalidar para probar las visitas de los objetos no rectangulares.

COleControl::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 de control mediante las funciones miembro DelayRenderData o DelayRenderFileData para la representación retrasada. La implementación predeterminada de esta función llama a OnRenderFileData o OnRenderGlobalData, respectivamente, si el medio de almacenamiento proporcionado es un archivo o memoria. Si el formato solicitado es CF_METAFILEPICT o el formato del conjunto de propiedades persistentes, la implementación predeterminada representa los datos adecuados y devuelve un valor distinto de cero. De lo contrario, devuelve 0 y no hace nada.

Si lpStgMedium->tymed es TYMED_NULL, el 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.

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 obtener más información, consulte las estructuras FORMATETC y STGMEDIUM en Windows SDK.

COleControl::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 de control mediante la función miembro DelayRenderData para la representación retrasada. La implementación predeterminada de esta función devuelve FALSE.

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 controlar varios medios de almacenamiento, invalide OnRenderData. Si los datos están en un archivo o tienen un tamaño variable, invalide OnRenderFileData.

Para obtener más información, vea la estructura FORMATETC en Windows SDK.

COleControl::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 de control mediante la función miembro DelayRenderData para la representación retrasada. 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.

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 controlar varios medios de almacenamiento, invalide OnRenderData. Si los datos están en un archivo o tienen un tamaño variable, invalide OnRenderFileData.

Para obtener más información, vea la estructura FORMATETC en Windows SDK.

COleControl::OnResetState

Lo llama el marco cuando las propiedades del control deben establecerse en sus valores predeterminados.

virtual void OnResetState();

Comentarios

La implementación predeterminada llama a DoPropExchange, pasando un objeto CPropExchange que hace que las propiedades se establezcan en sus valores predeterminados.

El escritor de control puede insertar un código de inicialización para el control OLE en este reemplazable. Se llama a esta función cuando se produce un error en IPersistStream::Load o IPersistStorage::Load, o se llama a IPersistStreamInit::InitNew, o IPersistStorage::InitNew, sin llamar primero a IPersistStream::Load o IPersistStorage::Load.

COleControl::OnSetClientSite

Lo llama el marco cuando el contenedor ha llamado a la función IOleControl::SetClientSite del control.

virtual void OnSetClientSite();

Comentarios

De forma predeterminada, OnSetClientSite comprueba si se cargan las propiedades de ruta de acceso de datos y, si son, llama a DoDataPathPropExchange.

Invalide esta función para realizar cualquier procesamiento especial de esta notificación. En concreto, las invalidaciones de esta función deben llamar a la clase base.

COleControl::OnSetData

Llamado por el marco para reemplazar los datos del control 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
TRUE si el control debe liberar el medio de almacenamiento; FALSE si el control no debe liberar el medio de almacenamiento.

Valor devuelto

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

Comentarios

Si los datos están en el formato de conjunto de propiedades persistentes, la implementación predeterminada modifica el estado del control en consecuencia. De lo contrario, la implementación predeterminada no hace nada. Si bRelease es TRUE, se realiza una llamada a ReleaseStgMedium; de lo contrario, no se realiza.

Invalide esta función para reemplazar los datos de control con los datos especificados.

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

COleControl::OnSetExtent

Lo llama el marco cuando es necesario cambiar la extensión del control, como resultado de una llamada a IOleObject::SetExtent.

virtual BOOL OnSetExtent(LPSIZEL lpSizeL);

Parámetros

lpSizeL
Puntero a la estructura SIZEL que usa enteros largos para representar el ancho y el alto del control, expresados en unidades HIMETRIC.

Valor devuelto

Distinto de cero si se aceptó el cambio de tamaño; de lo contrario es 0.

Comentarios

La implementación predeterminada controla el cambio de tamaño de la extensión del control. Si el control está activo en el lugar, se realiza una llamada al contenedor OnPosRectChanged.

Invalide esta función para modificar el cambio de tamaño predeterminado del control.

COleControl::OnSetObjectRects

Lo llama el marco para implementar una llamada a IOleInPlaceObject::SetObjectRects.

virtual BOOL OnSetObjectRects(
    LPCRECT lpRectPos,
    LPCRECT lpRectClip);

Parámetros

lpRectPos
Puntero a una estructura RECT que indica la nueva posición y el tamaño del control en relación con el contenedor.

lpRectClip
Puntero a una estructura RECT que indica un área rectangular a la que se va a recortar el control.

Valor devuelto

Distinto de cero si se aceptó el cambio de posición; de lo contrario es 0.

Comentarios

La implementación predeterminada controla automáticamente el cambio de posición y el cambio del tamaño de la ventana de control y devuelve TRUE.

Invalide esta función para modificar el comportamiento predeterminado de esta función.

COleControl::OnShowToolBars

Lo llama el marco cuando se ha activado la interfaz de usuario del control.

virtual void OnShowToolBars();

Comentarios

La implementación predeterminada no hace nada.

COleControl::OnTextChanged

Lo llama el marco cuando el valor de la propiedad Caption o Text del stock ha cambiado.

virtual void OnTextChanged();

Comentarios

La implementación predeterminada llama a InvalidateControl.

Invalide esta función si se desea una notificación después de que cambie esta propiedad.

COleControl::OnWindowlessMessage

Lo llama el marco en respuesta a la solicitud de un contenedor IOleInPlaceObjectWindowless::OnWindowMessage.

virtual BOOL OnWindowlessMessage(
    UINT msg,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT* plResult);

Parámetros

msg
Identificador de mensaje tal y como lo pasa Windows.

wParam
Tal y como pasa Windows. Especifica información adicional específica de los mensajes. El contenido de este parámetro depende del valor del parámetro msg.

lParam
Tal y como pasa Windows. Especifica información adicional específica de los mensajes. El contenido de este parámetro depende del valor del parámetro msg.

plResult
Código de resultado de Windows. Especifica el resultado del procesamiento del mensaje y depende del mensaje enviado.

Valor devuelto

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

Comentarios

Procesa los mensajes de ventana para los controles sin ventana. Los COleControl deOnWindowlessMessage se deben usar para los mensajes de ventana distintos de los mensajes del mouse y los mensajes de teclado. COleControl proporciona SetCapture y SetFocus específicamente para obtener la captura del mouse y el foco de teclado para objetos OLE sin ventana.

Dado que los objetos sin ventana no tienen una ventana, necesitan un mecanismo para permitir que el contenedor envíe mensajes a ellos. Un objeto OLE sin ventana obtiene mensajes de su contenedor, a través del método OnWindowMessage en la interfaz IOleInPlaceObjectWindowless (una extensión de IOleInPlaceObject para la compatibilidad sin ventanas). OnWindowMessage no acepta un parámetro HWND.

COleControl::ParentToClient

Convierte las coordenadas de pPoint en coordenadas cliente.

virtual UINT ParentToClient(
    LPCRECT lprcBounds,
    LPPOINT pPoint,
    BOOL bHitTest = FALSE) const;

Parámetros

lprcBounds
Puntero a los límites del control OLE dentro del contenedor. No el área de cliente, sino el área de todo el control, incluidos los bordes y las barras de desplazamiento.

pPoint
Puntero al punto primario (contenedor) que debe trasladarse a las coordenadas del área cliente del control.

bHitTest
Especifica si se deben realizar pruebas de alcance o no en el punto.

Valor devuelto

Si bHitTest es FALSE, devuelve HTNOWHERE. Si bHitTest es TRUE, devuelve la ubicación en la que el punto primario (contenedor) se encuentra en el área cliente del control OLE y es uno de los siguientes valores de prueba de posicionamiento del mouse:

  • HTBORDER en el borde de una ventana que no tiene un borde de dimensionamiento de tamaño.

  • HTBOTTOM en el borde horizontal inferior de la ventana.

  • HTBOTTOMLEFT en la esquina inferior izquierda del borde de la ventana.

  • HTBOTTOMRIGHT en la esquina inferior derecha del borde de la ventana.

  • HTCAPTION en un área de barra de título.

  • HTCLIENT en un área de cliente.

  • HTERROR en el fondo de la pantalla o en una línea divisoria entre ventanas (igual que HTNOWHERE, excepto que la función de Windows DefWndProc genere un pitido del sistema para indicar un error).

  • HTGROWBOX en un cuadro de tamaño.

  • HTHSCROLL en la barra de desplazamiento horizontal.

  • HTLEFT en el borde izquierdo de la ventana.

  • HTMAXBUTTON en un botón de maximizar.

  • HTMENU en un área del menú.

  • HTMINBUTTON en un botón de minimizar.

  • HTNOWHERE en el fondo de la pantalla o en una línea divisoria entre ventanas.

  • HTREDUCE en un botón de minimizar.

  • HTRIGHT en el borde derecho de la ventana.

  • HTSIZE en un cuadro de tamaño (igual que HTGROWBOX).

  • HTSYSMENU en un menú de control o en un botón de cierre en una ventana secundaria.

  • HTTOP en el borde horizontal superior de la ventana.

  • HTTOPLEFT en la esquina superior izquierda del borde de la ventana.

  • HTTOPRIGHT en la esquina superior derecha del borde de la ventana.

  • HTTRANSPARENT en una ventana cubierta actualmente por otra ventana.

  • HTVSCROLL en la barra de desplazamiento vertical.

  • HTZOOM en un botón de maximizar.

Comentarios

En el pPoint de entrada es relativo al origen del elemento primario (esquina superior izquierda del contenedor). En el pPoint de salida es relativo al origen del área cliente del control OLE (esquina superior izquierda del área cliente del control).

COleControl::PostModalDialog

Notifica al contenedor que se cerró un cuadro de diálogo modal.

void PostModalDialog(HWND hWndParent = NULL);

Parámetros

hWndParent
Manipulador a la ventana primaria del cuadro de diálogo modal.

Comentarios

Llame a esta función después de mostrar cualquier cuadro de diálogo modal. Se debe llamar a esta función para que el contenedor pueda habilitar cualquier ventana de nivel superior deshabilitada por PreModalDialog. Esta función debe emparejarse con una llamada a PreModalDialog.

COleControl::PreModalDialog

Notifica al contenedor que se va a mostrar un cuadro de diálogo modal.

void PreModalDialog(HWND hWndParent = NULL);

Parámetros

hWndParent
Manipulador a la ventana primaria del cuadro de diálogo modal.

Comentarios

Llame a esta función antes de mostrar cualquier cuadro de diálogo modal. Se debe llamar a esta función para que el contenedor pueda deshabilitar todas sus ventanas. Después de mostrar el cuadro de diálogo modal, debe llamar a PostModalDialog.

COleControl::RecreateControlWindow

Destruye y vuelve a crear la ventana del control.

void RecreateControlWindow();

Comentarios

Esto puede ser necesario si se necesitan cambiar los bits de estilo de la ventana.

COleControl::Refresh

Fuerza un reintentos del control OLE.

void Refresh();

Comentarios

Esta función es compatible con la clase base COleControl como método del stock, denominado Refresh. Esto permite a los usuarios del control OLE volver a dibujar el control en un momento específico. Para obtener más información de este método, consulte el artículo Métodos de control ActiveX.

COleControl::ReleaseCapture

Libera la captura del mouse.

BOOL ReleaseCapture();

Valor devuelto

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

Comentarios

Si el control tiene actualmente la captura del mouse, se libera la captura. De lo contrario, esta función no tendrá efecto.

COleControl::ReleaseDC

Libera el contexto del dispositivo para mostrar un contenedor de un control sin ventanas, liberando el contexto del dispositivo para que lo usen otras aplicaciones.

int ReleaseDC(CDC* pDC);

Parámetros

pDC
Identifica el contexto del dispositivo contenedor que va a liberarse.

Valor devuelto

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

Comentarios

La aplicación debe llamar a ReleaseDC, para cada llamada a GetDC.

COleControl::ReparentControlWindow

Establece el elemento primario del control.

virtual void ReparentControlWindow(
    HWND hWndOuter,
    HWND hWndParent);

Parámetros

hWndOuter
Manipulador de la ventana de control.

hWndParent
Manipulador de la nueva ventana primaria.

Comentarios

Llame a esta función para restablecer el elemento primario de la ventana de control.

COleControl::ResetStockProps

Inicializa el estado de las propiedades del stock COleControl en sus valores predeterminados.

void ResetStockProps();

Comentarios

Las propiedades son: Appearance, BackColor, BorderStyle, Caption, Enabled, Font, ForeColor, hWnd y Text. Para obtener una descripción de las propiedades del stock, consulte Controles ActiveX: Agregar propiedades de stock.

Puede mejorar el rendimiento de inicialización binaria de un control mediante ResetStockProps y ResetVersion para invalidar COleControl::OnResetState. Observe el ejemplo siguiente. Para obtener más información sobre cómo optimizar la inicialización, consulte Controles ActiveX: Optimización.

Ejemplo

void CMyAxCtrl::OnResetState()
{
   ResetVersion(MAKELONG(_wVerMinor, _wVerMajor));
   ResetStockProps();

   // initialize custom properties here
}

COleControl::ResetVersion

Inicializa el número de versión en el valor especificado.

void ResetVersion(DWORD dwVersionDefault);

Parámetros

dwVersionDefault
Número de versión que se va a asignar al control.

Comentarios

Puede mejorar el rendimiento de inicialización binaria de un control mediante ResetVersion y ResetStockProps para invalidar COleControl::OnResetState. Vea el ejemplo en ResetStockProps. Para obtener más información sobre cómo optimizar la inicialización, consulte Controles ActiveX: Optimización.

COleControl::ScrollWindow

Permite a un objeto OLE sin ventanas desplazar un área dentro de su imagen activa en la pantalla.

void ScrollWindow(
    int xAmount,
    int yAmount,
    LPCRECT lpRect = NULL,
    LPCRECT lpClipRect = NULL);

Parámetros

xAmount
Especifica la cantidad, en unidades de dispositivo, de desplazamiento horizontal. Este parámetro debe tener un valor negativo para desplazarse a la izquierda.

yAmount
Especifica la cantidad, en unidades de dispositivo, de desplazamiento vertical. Este parámetro debe tener un valor negativo para desplazarse hacia arriba.

lpRect
Apunta a un objeto CRect o a una estructura RECT que especifica la parte del área cliente del objeto OLE que se va a desplazar, en coordenadas de cliente de la ventana contenedora. Si lpRect es NULL, se desplaza el área de cliente del objeto OLE por completo.

lpClipRect
Apunta a un objeto CRect o estructura RECT que especifica el rectángulo de recorte que se va a recortar. Solo se desplazan los píxeles dentro del rectángulo. Los bits fuera del rectángulo no se ven afectados aunque estén en el rectángulo lpRect. Si lpClipRect es NULL, no se realiza ningún recorte en el rectángulo de desplazamiento.

COleControl::SelectFontObject

Selecciona una fuente en un contexto de dispositivo.

CFont* SelectFontObject(
    CDC* pDC,
    CFontHolder& fontHolder);

Parámetros

pDC
Puntero a un objeto de contexto del dispositivo.

fontHolder
Referencia al objeto CFontHolder que representa la fuente que se va a seleccionar.

Valor devuelto

Puntero a la fuente seleccionada previamente. Cuando el autor de la llamada haya terminado todas las operaciones de dibujo que usan fontHolder, debe volver a seleccionar la fuente seleccionada previamente pasándola como parámetro a CDC::SelectObject.

COleControl::SelectStockFont

Selecciona la propiedad Font del stock personalizada en un contexto de dispositivo.

CFont* SelectStockFont(CDC* pDC);

Parámetros

pDC
Contexto del dispositivo en el que se seleccionará la fuente.

Valor devuelto

Puntero al objeto CFont seleccionado previamente. Debe usar CDC::SelectObject para volver a seleccionar esta fuente en el contexto del dispositivo cuando haya terminado.

COleControl::SerializeExtent

Serializa o inicializa el estado del espacio de presentación asignado al control.

void SerializeExtent(CArchive& ar);

Parámetros

Ar
Objeto CArchive que se va a serializar hacia o desde.

Comentarios

Se puede mejorar el rendimiento de la persistencia binaria de un control mediante SerializeExtent, SerializeStockProps y SerializeVersion para invalidar a COleControl::Serialize. Observe el ejemplo siguiente. Para obtener más información sobre cómo optimizar la inicialización, consulte Controles ActiveX: Optimización.

Ejemplo

void CMyAxCtrl::Serialize(CArchive &ar)
{
   SerializeVersion(ar, MAKELONG(_wVerMinor, _wVerMajor));
   SerializeExtent(ar);
   SerializeStockProps(ar);

   if (ar.IsStoring())
   { // storing code
   }
   else
   { // loading code
   }
}

COleControl::SerializeStockProps

Serializa o inicializa el estado de las propiedades de COleControl del stock: Appearance, BackColor, BorderStyle, Caption, Enabled, Font, ForeColor y Text.

void SerializeStockProps(CArchive& ar);

Parámetros

Ar
Objeto CArchive que se va a serializar hacia o desde.

Comentarios

Para obtener una descripción de las propiedades del stock, consulte Controles ActiveX: Agregar propiedades de stock.

Se puede mejorar el rendimiento de la persistencia binaria de un control mediante SerializeStockProps, SerializeExtent y SerializeVersion para invalidar a COleControl::Serialize. Para obtener un ejemplo, vea el código en SerializeExtent. Para obtener más información sobre cómo optimizar la inicialización, consulte Controles ActiveX: Optimización.

COleControl::SerializeVersion

Serializa o inicializa el estado de la información de la versión de un control.

DWORD SerializeVersion(
    CArchive& ar,
    DWORD dwVersionDefault,
    BOOL bConvert = TRUE);

Parámetros

Ar
Objeto CArchive que se va a serializar hacia o desde.

dwVersionDefault
Número de versión actual del control.

bConvert
Indica si los datos persistentes se deben convertir al formato más reciente al guardarse o deben mantenerse en el mismo formato cuando se cargaron.

Valor devuelto

Número de versión del control. Si el archivo especificado se está cargando, SerializeVersion devuelve la versión cargada desde ese archivo. De lo contrario, devuelve la versión cargada actualmente.

Comentarios

Se puede mejorar el rendimiento de la persistencia binaria de un control mediante SerializeVersion, SerializeExtent y SerializeStockProps para invalidar a COleControl::Serialize. Para obtener un ejemplo, vea el código en SerializeExtent. Para obtener más información sobre cómo optimizar la inicialización, consulte Controles ActiveX: Optimización.

COleControl::SetAppearance

Establece el valor de la propiedad Appearance del stock de control.

void SetAppearance (short sAppearance);

Parámetros

sAppearance
Valor short (VT_I2) que se usará para la apariencia del control. Un valor de cero establece la apariencia del control en plano y un valor de 1 establece la apariencia del control en 3D.

Comentarios

Para obtener más información sobre las propiedades del stock, consulte Controles ActiveX: Propiedades.

COleControl::SetBackColor

Establece el valor de la propiedad BackColor del stock de control.

void SetBackColor(OLE_COLOR dwBackColor);

Parámetros

dwBackColor
Valor de OLE_COLOR que se usará para el dibujo en segundo plano del control.

Comentarios

Para obtener más información sobre el uso de esta propiedad y otras propiedades relacionadas, consulte el artículo Controles ActiveX: Propiedades.

COleControl::SetBorderStyle

Establece el valor de la propiedad BorderStyle del stock de control.

void SetBorderStyle(short sBorderStyle);

Parámetros

sBorderStyle
Nuevo estilo de borde para el control; 0 indica que no hay borde y 1 indica un borde normal.

Comentarios

La ventana de control se volverá a crear y se llamará a OnBorderStyleChanged.

COleControl::SetCapture

Hace que la ventana contenedora del control tome posesión de la captura del mouse en nombre del control.

CWnd* SetCapture();

Valor devuelto

Puntero al objeto de ventana CWnd que ha recibido previamente la entrada del mouse.

Comentarios

Si el control está activado y sin ventanas, esta función hace que la ventana contenedora del control tome posesión de la captura del mouse, en nombre del control. De lo contrario, esta función hace que el propio control tome posesión de la captura del mouse (igual que CWnd::SetCapture).

COleControl::SetControlSize

Establece el tamaño de la ventana de control OLE y notifica al contenedor que el sitio de control está cambiando.

BOOL SetControlSize(int cx, int cy);

Parámetros

cx
Especifica el nuevo ancho del control, en píxeles.

Cy
Especifica la nueva altura del control, en píxeles.

Valor devuelto

Distinto de cero si el método fue correcto; en caso contrario es 0.

Comentarios

Esta función no se debe usar en el constructor del control.

Tenga en cuenta que todas las coordenadas de las ventanas de control son relativas a la esquina superior izquierda del control.

COleControl::SetEnabled

Establece el valor de la propiedad Enabled del stock de control.

void SetEnabled(BOOL bEnabled);

Parámetros

bEnabled
TRUE si se va a habilitar el control; en caso contrario, FALSE.

Comentarios

Después de establecer esta propiedad, se llama a OnEnabledChange.

COleControl::SetFocus

Hace que la ventana contenedora del control tome posesión del foco de entrada en nombre del control.

CWnd* SetFocus();

Valor devuelto

Puntero al objeto de ventana CWnd que anteriormente tenía el foco de entrada o NULL si no hay dicha ventana.

Comentarios

Si el control está activado y sin ventanas, esta función hace que la ventana contenedora del control tome posesión del foco de entrada, en nombre del control. El foco de entrada dirige la entrada del teclado a la ventana del contenedor y el contenedor envía todos los mensajes de teclado posteriores al objeto OLE que llama a SetFocus. Cualquier ventana que tuviera previamente el foco de entrada lo pierde.

Si el control no es sin ventanas, esta función hace que el propio control tome posesión del foco de entrada (igual que CWnd::SetFocus).

COleControl::SetFont

Establece la propiedad Font del stock del control.

void SetFont(LPFONTDISP pFontDisp);

Parámetros

pFontDisp
Puntero a una interfaz de envío Font.

COleControl::SetForeColor

Establece el valor de la propiedad ForeColor del stock de control.

void SetForeColor(OLE_COLOR dwForeColor);

Parámetros

dwForeColor
Valor de OLE_COLOR que se usará para el dibujo en primer plano del control.

Comentarios

Para obtener más información sobre el uso de esta propiedad y otras propiedades relacionadas, consulte el artículo Controles ActiveX: Propiedades.

COleControl::SetInitialDataFormats

Lo llama el marco para inicializar la lista de formatos de datos admitidos por el control.

virtual void SetInitialDataFormats();

Comentarios

La implementación predeterminada especifica dos formatos: CF_METAFILEPICT y el conjunto de propiedades persistentes.

COleControl::SetInitialSize

Establece el tamaño de un control OLE cuando se muestra por primera vez en un contenedor.

void SetInitialSize(
    int cx,
    int cy);

Parámetros

cx
Ancho inicial del control OLE en píxeles.

Cy
Altura inicial del control OLE en píxeles.

Comentarios

Llame a esta función en el constructor para establecer el tamaño inicial del control. El tamaño inicial se mide en unidades de dispositivo o píxeles. Se recomienda realizar esta llamada en el constructor del control.

COleControl::SetModifiedFlag

Cambia el estado modificado de un control.

void SetModifiedFlag(BOOL bModified = TRUE);

Parámetros

bModified
Nuevo valor para la marca modificada del control. TRUE indica que se ha modificado el estado del control; FALSE indica que el estado del control se acaba de guardar.

Comentarios

Llame a esta función cada vez que se produzca un cambio que pueda afectar al estado persistente del control. Por ejemplo, si cambia el valor de una propiedad persistente, llame a esta función con bModified TRUE.

COleControl::SetNotPermitted

Indica que se ha producido un error en una solicitud de edición.

void SetNotPermitted();

Comentarios

Llame a esta función cuando BoundPropertyRequestEdit falle. Esta función produce una excepción de tipo COleDispScodeException para indicar que no se permitió la operación Set.

COleControl::SetNotSupported

Impide la modificación del valor de la propiedad de un control por parte del usuario.

void SetNotSupported();

Comentarios

Llame a esta función en lugar de la función Set de cualquier propiedad donde no se admita la modificación del valor de propiedad por parte del usuario del control. Un ejemplo sería una propiedad que es de solo lectura.

COleControl::SetRectInContainer

Establece las coordenadas del rectángulo del control en relación con el contenedor, expresado en unidades del dispositivo.

BOOL SetRectInContainer(LPCRECT lpRect);

Parámetros

lpRect
Puntero a un rectángulo que contiene las nuevas coordenadas del control en relación con el contenedor.

Valor devuelto

Distinto de cero si el método fue correcto; en caso contrario es 0.

Comentarios

Si el control está abierto, se cambia el tamaño; de lo contrario, se llama a la función OnPosRectChanged del contenedor.

COleControl::SetText

Establece el valor de la propiedad Caption o Text del stock del control.

void SetText(LPCTSTR pszText);

Parámetros

pszText
Un puntero a la cadena de caracteres.

Comentarios

Tenga en cuenta que las propiedades Caption y Text del stock están asignadas al mismo valor. Esto significa que los cambios realizados en cualquiera de las propiedades cambiarán automáticamente a ambas propiedades. En general, un control debe admitir la propiedad Caption o Text del stock, pero no ambas.

COleControl::ThrowError

Indica la aparición de un error en el control.

void ThrowError(
    SCODE sc,
    UINT nDescriptionID,
    UINT nHelpID = -1);

void ThrowError(
    SCODE sc,
    LPCTSTR pszDescription = NULL,
    UINT nHelpID = 0);

Parámetros

sc
Valor de código de estado que se va a informar. Para obtener una lista completa de los posibles códigos, consulte el artículo Controles ActiveX: Temas avanzados.

nDescriptionID
Identificador de recurso de cadena de la excepción que se va a informar.

nHelpID
Id. de ayuda del tema en el que se va a informar.

pszDescription
Cadena que contiene una explicación de la excepción que se va a informar.

Comentarios

Solo se debe llamar a esta función desde una función Get o Set para una propiedad OLE o desde la implementación de un método de automatización OLE. Si necesita indicar los errores que se producen en otros momentos, se debe desencadenar el evento error del stock.

COleControl::TransformCoords

Transforma los valores de coordenadas entre las unidades HIMETRIC y las unidades nativas del contenedor.

void TransformCoords(
    POINTL* lpptlHimetric,
    POINTF* lpptfContainer,
    DWORD flags);

Parámetros

lpptlHimetric
Puntero a una estructura POINTL que contiene coordenadas en unidades HIMETRIC.

lpptfContainer
Puntero a una estructura POINTF que contiene coordenadas en el tamaño de unidad del contenedor.

flags
Combinación de las marcas de los valores siguientes:

  • XFORMCOORDS_POSITION, posición en el contenedor.

  • XFORMCOORDS_SIZE, un tamaño en el contenedor.

  • XFORMCOORDS_HIMETRICTOCONTAINER, transformar unidades HIMETRIC en las unidades del contenedor.

  • XFORMCOORDS_CONTAINERTOHIMETRIC, transformar las unidades del contenedor en unidades HIMETRIC.

Comentarios

Las dos primeras marcas, XFORMCOORDS_POSITION y XFORMCOORDS_SIZE, indican si las coordenadas deben tratarse como una posición o un tamaño. Las dos marcas restantes indican la dirección de la transformación.

COleControl::TranslateColor

Convierte un valor de color del tipo de datos OLE_COLOR al tipo de datos COLORREF.

COLORREF TranslateColor(
    OLE_COLOR clrColor,
    HPALETTE hpal = NULL);

Parámetros

clrColor
Tipo de datos OLE_COLOR. Para obtener más información, consulte la función OleTranslateColor de Windows.

hpal
Manipulador de una paleta opcional; puede ser NULL.

Valor devuelto

Valor de color RGB (rojo, verde, azul) de 32 bits que define el color sólido más cercano al valor clrColor que el dispositivo puede representar.

Comentarios

Esta función es útil para trasladar las propiedades ForeColor y BackColor del stock a tipos COLORREF usados por las funciones miembro CDC .

COleControl::WillAmbientsBeValidDuringLoad

Determina si el control debe usar los valores de las propiedades de ambiente como valores predeterminados, cuando posteriormente se carga desde su estado persistente.

BOOL WillAmbientsBeValidDuringLoad();

Valor devuelto

Distinto a cero indica que las propiedades de ambiente serán válidas; de lo contrario, dichas propiedades no serán válidas.

Comentarios

En algunos contenedores, es posible que el control no tenga acceso a sus propiedades de ambiente durante la llamada inicial a la invalidación de COleControl::DoPropExchange. Este es el caso si el contenedor llama a IPersistStreamInit::Load o IPersistStorage::Load antes de llamar a IOleObject::SetClientSite (es decir, si no respeta el bit de estado de OLEMISC_SETCLIENTSITEFIRST).

COleControl::WindowProc

Proporciona un procedimiento de Windows para un objeto COleControl.

virtual LRESULT WindowProc(
    UINT message,
    WPARAM wParam,
    LPARAM lParam);

Parámetros

message
Especifica el mensaje de Windows que se va a procesar.

wParam
Proporciona información adicional que se usa para procesar el mensaje. El valor de este parámetro depende del mensaje.

lParam
Proporciona información adicional que se usa para procesar el mensaje. El valor de este parámetro depende del mensaje.

Valor devuelto

Valor devuelto del mensaje enviado.

Comentarios

Llame a esta función para enviar mensajes específicos a través de la asignación de mensajes del control.

Consulte también

Muestra MFC CIRC3
Muestra de MFC TESTHELP
COlePropertyPage (clase)
CWnd (clase)
Gráfico de jerarquías
CFontHolder (clase)
CPictureHolder (clase)