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
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)