Clase COleControlContainer

Actúa como contenedor de control para controles ActiveX.

Sintaxis

class COleControlContainer : public CCmdTarget

Miembros

Constructores públicos

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

Métodos públicos

Nombre Descripción
COleControlContainer::AttachControlSite Crea un sitio de control hospedado por el contenedor.
COleControlContainer::BroadcastAmbientPropertyChange Informa a todos los controles hospedados de que ha cambiado una propiedad ambiente.
COleControlContainer::CheckDlgButton Modifica el control de botón especificado.
COleControlContainer::CheckRadioButton Selecciona el botón de radio especificado de un grupo.
COleControlContainer::CreateControl Crea un control ActiveX hospedado.
COleControlContainer::CreateOleFont Crea una fuente OLE.
COleControlContainer::FindItem Devuelve el sitio personalizado del control especificado.
COleControlContainer::FreezeAllEvents Especifica si el sitio de control acepta eventos.
COleControlContainer::GetAmbientProp Recupera la propiedad ambiente especificada.
COleControlContainer::GetDlgItem Recupera el control de diálogo especificado.
COleControlContainer::GetDlgItemInt Recupera el valor del control de diálogo especificado.
COleControlContainer::GetDlgItemText Recupera el subtítulo del control de diálogo especificado.
COleControlContainer::HandleSetFocus Determina si el contenedor controla WM_SETFOCUS mensajes.
COleControlContainer::HandleWindowlessMessage Controla los mensajes enviados a un control sin ventanas.
COleControlContainer::IsDlgButtonChecked Determina el estado del botón especificado.
COleControlContainer::OnPaint Se llama para volver a dibujar una parte del contenedor.
COleControlContainer::OnUIActivate Se llama cuando un control está a punto de activarse en contexto.
COleControlContainer::OnUIDeactivate Se llama cuando un control se va a desactivar.
COleControlContainer::ScrollChildren Lo llama el marco cuando se reciben mensajes de desplazamiento desde una ventana secundaria.
COleControlContainer::SendDlgItemMessage Envía un mensaje al control especificado.
COleControlContainer::SetDlgItemInt Establece el valor del control especificado.
COleControlContainer::SetDlgItemText Establece el texto del control especificado.

Miembros de datos públicos

Nombre Descripción
COleControlContainer::m_crBack Color de fondo del contenedor.
COleControlContainer::m_crFore Color de primer plano del contenedor.
COleControlContainer::m_listSitesOrWnds Una lista de los sitios de control admitidos.
COleControlContainer::m_nWindowlessControls Número de controles sin ventana hospedados.
COleControlContainer::m_pOleFont Un puntero a la fuente OLE del sitio de control personalizado.
COleControlContainer::m_pSiteCapture Un puntero al sitio de control de captura.
COleControlContainer::m_pSiteFocus Puntero al control que actualmente tiene el foco de entrada.
COleControlContainer::m_pSiteUIActive Puntero al control que está activado actualmente en contexto.
COleControlContainer::m_pWnd Puntero a la ventana que implementa el contenedor de controles.
COleControlContainer::m_siteMap Mapa del sitio.

Comentarios

Esto se hace proporcionando compatibilidad con uno o varios sitios de control ActiveX (implementados por COleControlSite). COleControlContainer implementa completamente las interfaces IOleInPlaceFrame e IOleContainer, lo que permite que los controles ActiveX contenidos cumplan sus calificaciones como elementos en contexto.

Normalmente, esta clase se usa junto con COccManager y COleControlSite para implementar un contenedor de controles ActiveX personalizado, con sitios personalizados para uno o varios controles ActiveX.

Jerarquía de herencia

CObject

CCmdTarget

COleControlContainer

Requisitos

Encabezado: afxocc.h

COleControlContainer::AttachControlSite

Lo llama el marco para crear y adjuntar un sitio de control.

virtual void AttachControlSite(
    CWnd* pWnd,
    UINT nIDC = 0);

void AttachControlSite(
    CWnd* pWnd,
    UINT nIDC = 0);

Parámetros

pWnd
Puntero a un objeto CWnd .

nIDC
Identificador del control que se va a adjuntar.

Comentarios

Invalida esta función si deseas personalizar este proceso.

Nota:

Usa la primera forma de esta función si está vinculando estáticamente a la biblioteca MFC. Usa el segundo formulario si está vinculando dinámicamente a la biblioteca MFC.

COleControlContainer::BroadcastAmbientPropertyChange

Informa a todos los controles hospedados de que ha cambiado una propiedad ambiente.

virtual void BroadcastAmbientPropertyChange(DISPID dispid);

Parámetros

dispid
Identificador de envío de la propiedad ambiente que se va a cambiar.

Comentarios

El marco llama a esta función cuando una propiedad de ambiente ha cambiado de valor. Invalida esta función para personalizar este comportamiento.

COleControlContainer::CheckDlgButton

Modifica el estado actual del botón.

virtual void CheckDlgButton(
    int nIDButton,
    UINT nCheck);

Parámetros

nIDButton
El identificador del botón que se va a modificar.

nCheck
Especifica el estado del botón. Puede ser uno de los siguientes:

  • BST_CHECKED Establece el estado del botón que se va a comprobar.

  • BST_INDETERMINATE Establece el estado del botón en gris, lo que indica un estado indeterminado. Usa este valor solo si el botón tiene el estilo BS_3STATE o BS_AUTO3STATE.

  • BST_UNCHECKED Establece el estado del botón que se va a borrar.

COleControlContainer::CheckRadioButton

Selecciona un botón de radio especificado en un grupo y borra los botones restantes del grupo.

virtual void CheckRadioButton(
    int nIDFirstButton,
    int nIDLastButton,
    int nIDCheckButton);

Parámetros

nIDFirstButton
Especifica el identificador del primer botón de radio del grupo.

nIDLastButton
Especifica el identificador del último botón de radio del grupo.

nIDCheckButton
Especifica el identificador del botón de radio que se va a comprobar.

COleControlContainer::COleControlContainer

Construye un objeto COleControlContainer.

explicit COleControlContainer(CWnd* pWnd);

Parámetros

pWnd
El valor de este parámetro se corresponde con un puntero que apunta a la ventana primaria del contenedor.

Comentarios

Una vez creado correctamente el objeto, agrega un sitio de control personalizado con una llamada a AttachControlSite.

COleControlContainer::CreateControl

Crea un control ActiveX hospedado por el objeto COleControlSite.

BOOL CreateControl(
    CWnd* pWndCtrl,
    REFCLSID clsid,
    LPCTSTR lpszWindowName,
    DWORD dwStyle,
    const RECT& rect,
    UINT nID,
    CFile* pPersist =NULL,
    BOOL bStorage =FALSE,
    BSTR bstrLicKey =NULL,
    COleControlSite** ppNewSite =NULL);

BOOL CreateControl(
    CWnd* pWndCtrl,
    REFCLSID clsid,
    LPCTSTR lpszWindowName,
    DWORD dwStyle,
    const POINT* ppt,
    const SIZE* psize,
    UINT nID,
    CFile* pPersist =NULL,
    BOOL bStorage =FALSE,
    BSTR bstrLicKey =NULL,
    COleControlSite** ppNewSite =NULL);

Parámetros

pWndCtrl
Puntero al objeto de ventana que representa el control.

clsid
El Id. de clase único del control.

lpszWindowName
Un puntero al texto que se mostrará en el control. Establece el valor de la propiedad Subtítulo o Texto del control (si existiera). Si es NULL, la propiedad Subtítulo o Texto del control no cambia.

dwStyle
Estilos de ventanas. Los estilos disponibles aparecen en la sección Comentarios.

rect
Especifica el tamaño y la posición del control. Puede ser un objeto CRect o una estructura RECT.

Nid
Especifica el identificador de la ventana secundaria del control.

pPersist
Un puntero a un CFile que contiene el estado persistente del control. El valor predeterminado es NULL, lo que indica que el control se inicializa sin restaurar su estado desde ningún almacenamiento persistente. Si no es NULL, debe ser un puntero a un objeto derivado de CFile que contenga los datos persistentes del control en forma de una secuencia o un almacenamiento. Estos datos pueden haberse guardado en una activación anterior del cliente. El CFile puede contener otros datos, pero debe tener su puntero de lectura y escritura establecido en el primer byte de datos persistentes en el momento de la llamada a CreateControl.

bStorage
Indica si los datos de pPersist deben interpretarse como IStorage o datos IStream. Si los datos de pPersist son un almacenamiento, bStorage debe ser TRUE. Si los datos de pPersist son una secuencia, bStorage debe ser FALSE. El valor predeterminado es FALSE.

bstrLicKey
Datos de clave de licencia opcionales. Estos datos solo son necesarios para crear controles que requieran una clave de licencia en tiempo de ejecución. Si el control admite licencias, debe proporcionar una clave de licencia para que la creación del control se realice correctamente. El valor predeterminado es NULL.

ppNewSite
Puntero al sitio de control existente que hospedará el control que se va a crear. El valor predeterminado es NULL, lo que indica que se creará automáticamente un nuevo sitio de control y se asociará al nuevo control.

ppt
Puntero a una estructura POINT que contiene la esquina superior izquierda del control. El tamaño del sector viene determinado por el valor psize. Los valores ppt y psize son un método opcional para especificar el tamaño y la posición del control.

psize
Puntero a una estructura SIZEque contiene el tamaño del control. La esquina superior izquierda viene determinada por el valor de ppt. Los valores ppt y psize son un método opcional para especificar el tamaño y la posición del control.

Valor devuelto

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

Comentarios

Solo se admite un subconjunto de las marcas dwStyle de Windows CreateControl:

  • WS_VISIBLE Crea una ventana que está visible inicialmente. Obligatorio si desea que el control sea visible inmediatamente, como las ventanas normales.

  • WS_DISABLED Crea una ventana que está deshabilitada inicialmente. Una ventana deshabilitada no puede recibir la entrada del usuario. Se puede establecer si el control tiene una propiedad Habilitado.

  • WS_BORDER Crea una ventana con un borde de línea fina. Se puede establecer si el control tiene una propiedad BorderStyle.

  • WS_GROUP Especifica el primer control de un grupo de controles. El usuario puede cambiar el foco del teclado desde un control del grupo al siguiente mediante las teclas de dirección. Todos los controles definidos con el estilo WS_GROUP después del primer control pertenecen al mismo grupo. El siguiente control con el estilo WS_GROUP finaliza el grupo e inicia el siguiente grupo.

  • WS_TABSTOP Especifica un control que puede recibir el foco del teclado cuando el usuario presiona la tecla TAB. Al presionar la tecla TAB, se cambia el foco del teclado al siguiente control del estilo WS_TABSTOP.

Use la segunda sobrecarga para crear controles de tamaño predeterminado.

COleControlContainer::CreateOleFont

Crea una fuente OLE.

void CreateOleFont(CFont* pFont);

Parámetros

pFont
Puntero a la fuente que va a usar el contenedor de controles.

COleControlContainer::FindItem

Busca el sitio personalizado que hospeda el elemento especificado.

virtual COleControlSite* FindItem(UINT nID) const;

Parámetros

Nid
Identificador del elemento que se va a encontrar.

Valor devuelto

Puntero al sitio personalizado del elemento especificado.

COleControlContainer::FreezeAllEvents

Determina si el contenedor omitirá los eventos de los sitios de control adjuntos o los aceptará.

void FreezeAllEvents(BOOL bFreeze);

Parámetros

bFreeze
Distinto de cero si se procesarán los eventos; de lo contrario, 0.

Comentarios

Nota:

El control no es necesario para detener la activación de eventos si lo solicita el contenedor de control. Puede continuar activando, pero el contenedor de control omitirá todos los eventos posteriores.

COleControlContainer::GetAmbientProp

Recupera el valor de una propiedad ambiente especificada.

virtual BOOL GetAmbientProp(
    COleControlSite* pSite,
    DISPID dispid,
    VARIANT* pvarResult);

Parámetros

pSite
Puntero a un sitio de control desde el que se recuperará la propiedad ambiente.

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

pVarResult
Un puntero al valor de la propiedad de ambiente.

Valor devuelto

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

COleControlContainer::GetDlgItem

Recupera un puntero al control o a la ventana secundaria especificados en un cuadro de diálogo u otra ventana.

virtual CWnd* GetDlgItem(int nID) const;

virtual void GetDlgItem(
    int nID,
    HWND* phWnd) const;

Parámetros

Nid
Identificador del elemento de diálogo a recuperar.

phWnd
Puntero al identificador del objeto de ventana del elemento de diálogo especificado.

Valor devuelto

Un puntero a la ventana del diálogo del objeto.

COleControlContainer::GetDlgItemInt

Recupera el valor del texto traducido del control especificado.

virtual UINT GetDlgItemInt(
    int nID,
    BOOL* lpTrans,
    BOOL bSigned) const;

Parámetros

Nid
Identificador del control.

lpTrans
Puntero a una variable booleana que recibe un valor de operación correcta o de error (TRUE indica que se ha realizado correctamente, FALSE indica error).

bSigned
Especifica si la función debe examinar el texto de un signo menos al principio y devolver un valor entero con signo si encuentra uno. Si el parámetro bSigned es TRUE, especificando que el valor que se va a recuperar es un valor entero con signo, convierta el valor devuelto en un int tipo. Para obtener información de error extendida, llame a GetLastError.

Valor devuelto

Si se ejecuta correctamente, la variable a la que apunta lpTrans se establece en TRUE y el valor devuelto es el valor traducido del texto del control.

Si se produce un error en la función, la variable a la que apunta lpTrans se establece en FALSE y el valor devuelto es cero. Ten en cuenta que, dado que cero es un posible valor traducido, un valor devuelto de cero no indica por sí mismo un error.

Si lpTrans es NULL, la función no devuelve información sobre éxito o error.

Comentarios

La función traduce el texto recuperado quitando los espacios adicionales al principio del texto y, a continuación, convirtiendo los dígitos decimales. La función detiene la traducción cuando llega al final del texto o cuando encuentra cualquier carácter no numérico.

Esta función devuelve cero si el valor traducido es mayor que INT_MAX (para números con signo) o UINT_MAX (para números sin signo).

COleControlContainer::GetDlgItemText

Recupera el texto del control especificado.

virtual int GetDlgItemText(
    int nID,
    LPTSTR lpStr,
    int nMaxCount) const;

Parámetros

Nid
Identificador del control.

lpStr
[in] Puntero al texto del control.

nMaxCount
Especifica la longitud máxima, en caracteres, de la cadena que se va a copiar en el búfer al que apunta lpStr. Si la longitud de la cadena supera el límite, la cadena se trunca.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto especifica el número de caracteres copiados en el búfer, sin incluir el carácter nulo de terminación.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

COleControlContainer::HandleSetFocus

Determina si el contenedor controla WM_SETFOCUS mensajes.

virtual BOOL HandleSetFocus();

Valor devuelto

Distinto de cero si el contenedor controla WM_SETFOCUS mensajes; de lo contrario, cero.

COleControlContainer::HandleWindowlessMessage

Procesa los mensajes de ventana para los controles sin ventana.

virtual BOOL HandleWindowlessMessage(
    UINT message,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT* plResult);

Parámetros

message
Identificador del mensaje de ventana, proporcionado por Windows.

wParam
Parámetro del mensaje; proporcionado por Windows. Especifica información adicional específica de los mensajes. El contenido de este parámetro depende del valor del parámetro msg.

lParam
Parámetro del mensaje; proporcionado por 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

Es distinto de cero si es correcto. En caso contrario, es cero.

Comentarios

Invalida esta función para personalizar el control de mensajes de control sin ventanas.

COleControlContainer::IsDlgButtonChecked

Determina el estado del botón especificado.

virtual UINT IsDlgButtonChecked(int nIDButton) const;

Parámetros

nIDButton
Identificador del botón.

Valor devuelto

El valor devuelto de un botón creado con el estilo BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIOBUTTON o BS_3STATE. Puede ser uno de los siguientes:

  • BST_CHECKED Botón está activado.

  • BST_INDETERMINATE Button está sombreado, lo que indica un estado indeterminado (solo se aplica si el botón tiene el estilo BS_3STATE o BS_AUTO3STATE).

  • BST_UNCHECKED Botón está desactivado.

Comentarios

Si el botón es un control de tres estados, la función miembro determina si está atenuado, activado o ninguno de las dos.

COleControlContainer::m_crBack

Color de fondo del contenedor.

COLORREF m_crBack;

COleControlContainer::m_crFore

Color de primer plano del contenedor.

COLORREF m_crFore;

COleControlContainer::m_listSitesOrWnds

Lista de los sitios de control hospedados por el contenedor.

CTypedPtrList<CPtrList, COleControlSiteOrWnd*> m_listSitesOrWnds;

COleControlContainer::m_nWindowlessControls

Número de controles sin ventana hospedados por el contenedor de controles.

int m_nWindowlessControls;

COleControlContainer::m_pOleFont

Un puntero a la fuente OLE del sitio de control personalizado.

LPFONTDISP m_pOleFont;

COleControlContainer::m_pSiteCapture

Un puntero al sitio de control de captura.

COleControlSite* m_pSiteCapture;

COleControlContainer::m_pSiteFocus

Un puntero al sitio control que actualmente tiene el foco de entrada.

COleControlSite* m_pSiteFocus;

COleControlContainer::m_pSiteUIActive

Un puntero al sitio de control que está activado en contexto.

COleControlSite* m_pSiteUIActive;

COleControlContainer::m_pWnd

Un puntero al objeto de ventana asociado al contenedor.

CWnd* m_pWnd;

COleControlContainer::m_siteMap

Mapa del sitio.

CMapPtrToPtr m_siteMap;

COleControlContainer::OnPaint

Lo llama el marco para controlar WM_PAINT solicitudes.

virtual BOOL OnPaint(CDC* pDC);

Parámetros

pDC
Un puntero al contexto del dispositivo usado por el contenedor.

Valor devuelto

Distinto de cero si se ha controlado el mensaje; de lo contrario, cero.

Comentarios

Invalida esta función para personalizar el proceso de pintura.

COleControlContainer::OnUIActivate

Lo llama el marco cuando el sitio de control, al que apunta pSite, está a punto de activarse en contexto.

virtual void OnUIActivate(COleControlSite* pSite);

Parámetros

pSite
Un puntero al sitio de control que está a punto de activarse en contexto.

Comentarios

La activación local significa que el menú principal del contenedor se reemplaza por un menú compuesto en contexto.

COleControlContainer::OnUIDeactivate

Lo llama el marco cuando el sitio de control, al que apunta pSite, está a punto de desactivarse.

virtual void OnUIDeactivate(COleControlSite* pSite);

Parámetros

pSite
Puntero al sitio de control a punto de desactivarse.

Comentarios

Cuando se recibe esta notificación, el contenedor debe reinstalar su interfaz de usuario y centrarse.

COleControlContainer::ScrollChildren

Lo llama el marco cuando se reciben mensajes de desplazamiento desde una ventana secundaria.

virtual void ScrollChildren(
    int dx,
    int dy);

Parámetros

dx
Cantidad, en píxeles, de desplazamiento a lo largo del eje X.

dy
Cantidad, en píxeles, de desplazamiento a lo largo del eje Y.

COleControlContainer::SendDlgItemMessage

Envía un mensaje al control especificado.

virtual LRESULT SendDlgItemMessage(
    int nID,
    UINT message,
    WPARAM wParam,
    LPARAM lParam);

Parámetros

Nid
Especifica el identificador del control que recibe el mensaje.

message
Especifica el mensaje que se va a enviar.

wParam
Especifica información adicional específica de los mensajes.

lParam
Especifica información adicional específica de los mensajes.

COleControlContainer::SetDlgItemInt

Establece el texto de un control en un cuadro de diálogo en la representación de cadena de un valor entero especificado.

virtual void SetDlgItemInt(
    int nID,
    UINT nValue,
    BOOL bSigned);

Parámetros

Nid
Identificador del control.

nValue
Valor entero que se va a mostrar.

bSigned
Especifica si el parámetro nValue está firmado o sin firmar. Si este parámetro es TRUE, nValue se firma. Si este parámetro es TRUE y nValue es menor que cero, se coloca un signo menos antes del primer dígito de la cadena. Si este parámetro es FALSE, nValue no tiene signo.

COleControlContainer::SetDlgItemText

Establece el texto del control especificado, utilizando el texto contenido en lpszString.

virtual void SetDlgItemText(
    int nID,
    LPCTSTR lpszString);

Parámetros

Nid
Identificador del control.

lpszString
[in] Puntero al texto del control.

Consulte también

CCmdTarget (clase)
Gráfico de jerarquías
COleControlSite (clase)
COccManager (clase)