CComCompositeControl (clase)
Esta clase proporciona los métodos necesarios para implementar un control compuesto.
Importante
Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.
Sintaxis
template <class T>
class CComCompositeControl : public CComControl<T,CAxDialogImpl<T>>
Parámetros
T
La clase, derivada de CComObjectRoot o CComObjectRootEx, así como de cualquier otra interfaz que desee admitir para el control compuesto.
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CComCompositeControl::CComCompositeControl | Constructor . |
CComCompositeControl::~CComCompositeControl | El destructor . |
Métodos públicos
Nombre | Descripción |
---|---|
CComCompositeControl::AdviseSinkMap | Llame a este método para avisar o desviar todos los controles hospedados por el control compuesto. |
CComCompositeControl::CalcExtent | Llame a este método para calcular el tamaño en unidades HIMETRIC del recurso de diálogo utilizado para hospedar el control compuesto. |
CComCompositeControl::Create | Se llama a este método para crear la ventana de control para el control compuesto. |
CComCompositeControl::CreateControlWindow | Llame a este método para crear la ventana de control y avisar a cualquier control hospedado. |
CComCompositeControl::SetBackgroundColorFromAmbient | Llame a este método para establecer el color de fondo del control compuesto mediante el color de fondo del contenedor. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CComCompositeControl::m_hbrBackground | Pincel de fondo. |
CComCompositeControl::m_hWndFocus | Identificador de la ventana que actualmente tiene el foco. |
Comentarios
Las clases derivadas de la clase CComCompositeControl
heredan la funcionalidad de un control compuesto ActiveX. Los controles ActiveX derivados de CComCompositeControl
se hospedan en un cuadro de diálogo estándar. Estos tipos de controles se denominan controles compuestos porque pueden hospedar otros controles (controles nativos de Windows y controles ActiveX).
CComCompositeControl
identifica el recurso de diálogo que se va a usar para crear el control compuesto buscando un miembro de datos enumerado en la clase secundaria. El id. de miembro de esta clase secundaria se establece en el identificador de recurso del recurso de diálogo que se usará como ventana del control. A continuación se muestra un ejemplo del miembro de datos de que la clase derivada de CComCompositeControl
debe contener para identificar el recurso de diálogo que se va a usar para la ventana del control:
enum { IDD = IDD_MYCOMPOSITE };
Nota:
Los controles compuestos siempre son controles con ventanas, aunque pueden contener controles sin ventanas.
Un control implementado por una CComCompositeControl
clase derivada de tiene un comportamiento de tabulación predeterminado integrado. Cuando el control recibe el foco al ser tabulado en una aplicación contenedora, al presionar sucesivamente la tecla TAB, el foco se desplazará por todos los controles contenidos del control compuesto y, a continuación, fuera del control compuesto y en el siguiente elemento en el orden de tabulación del contenedor. El orden de tabulación de los controles hospedados viene determinado por el recurso de diálogo y determina el orden en que se producirá el tabulador.
Nota:
Para que los aceleradores funcionen correctamente con CComCompositeControl
, es necesario cargar una tabla de aceleradores a medida que se crea el control, pasar el identificador y el número de aceleradores de nuevo a IOleControlImpl::GetControlInfo y, por último, destruir la tabla cuando se libere el control.
Ejemplo
// Example for overriding IOleControlImpl::GetControlInfo()
// This example uses the accelerator table from the project resources
// with the identifier IDR_ACCELTABLE
// Define GetControlInfo() in the header of your composite
// control class as follows:
STDMETHOD(GetControlInfo)(CONTROLINFO* pCI)
{
// Load the accelerator table from the resource
pCI->hAccel = LoadAccelerators(_AtlBaseModule.GetResourceInstance(),
MAKEINTRESOURCE(IDR_ACCELTABLE));
if (pCI->hAccel == NULL)
return E_FAIL;
// Get the number of accelerators in the table
pCI->cAccel = (USHORT)CopyAcceleratorTable(pCI->hAccel, NULL, 0);
// The following is optional if you want your control
// to process the return and/or escape keys
// pCI.dwFlags = CTRLINFO_EATS_RETURN | CTRLINFO_EATS_ESCAPE;
pCI->dwFlags = 0;
return S_OK;
}
Jerarquía de herencia
WinBase
CComCompositeControl
Requisitos
Encabezado: atlctl.h
CComCompositeControl::AdviseSinkMap
Llame a este método para avisar o desviar todos los controles hospedados por el control compuesto.
HRESULT AdviseSinkMap(bool bAdvise);
Parámetros
bAdvise
True si se deben recomendar todos los controles; en caso contrario, false.
Valor devuelto
Value | Descripción |
---|---|
S_OK |
Todos los controles del mapa del receptor de eventos se conectaron o desconectaron correctamente de su origen de eventos. |
E_FAIL |
No todos los controles del mapa del receptor de eventos se podrían conectar o desconectar de su origen de eventos correctamente. |
E_POINTER |
Este error suele indicar un problema con una entrada en el mapa receptor de eventos del control o un problema con un argumento de plantilla usado en una clase base IDispEventImpl o IDispEventSimpleImpl . |
CONNECT_E_ADVISELIMIT |
El punto de conexión ya ha alcanzado su límite de conexiones y no puede aceptar más. |
CONNECT_E_CANNOTCONNECT |
El receptor no admite la interfaz requerida por este punto de conexión. |
CONNECT_E_NOCONNECTION |
El valor de cookie no representa una conexión válida. Este error suele indicar un problema con una entrada en el mapa receptor de eventos del control o un problema con un argumento de plantilla usado en una clase base IDispEventImpl o IDispEventSimpleImpl . |
Comentarios
La implementación base de este método busca en las entradas del mapa del receptor de eventos. A continuación, aconseja o anula la idea de que la conexión apunta a los objetos COM descritos por las entradas del receptor del receptor de eventos. Este método miembro también se basa en el hecho de que la clase derivada hereda de una instancia de IDispEventImpl
para cada control del mapa receptor que se va a recomendar o no diseñar.
CComCompositeControl::CalcExtent
Llame a este método para calcular el tamaño en unidades HIMETRIC del recurso de diálogo utilizado para hospedar el control compuesto.
BOOL CalcExtent(SIZE& size);
Parámetros
size
Referencia a una estructura SIZE
que va a rellenar este método.
Valor devuelto
TRUE si el control está hospedado por un cuadro de diálogo; en caso contrario, FALSE.
Comentarios
El tamaño se devuelve en el parámetro size.
CComCompositeControl::Create
Se llama a este método para crear la ventana de control para el control compuesto.
HWND Create(
HWND hWndParent,
RECT& /* rcPos */,
LPARAM dwInitParam = NULL);
Parámetros
hWndParent
Identificador de la ventana primaria del control.
rcPos
Reservado.
dwInitParam
Datos que se van a pasar al control durante la creación del control. Los datos pasados como dwInitParam se mostrarán como el parámetro LPARAM del mensaje WM_INITDIALOG, que se enviará al control compuesto cuando se cree.
Valor devuelto
Identificador del cuadro de diálogo de control compuesto recién creado.
Comentarios
Normalmente se llama a este método durante la activación local del control.
CComCompositeControl::CComCompositeControl
Constructor .
CComCompositeControl();
Comentarios
Inicializa los miembros de datos CComCompositeControl::m_hbrBackground y CComCompositeControl::m_hWndFocus a NULL.
CComCompositeControl::~CComCompositeControl
El destructor .
~CComCompositeControl();
Comentarios
Elimina el objeto de fondo, si existe.
CComCompositeControl::CreateControlWindow
Llame a este método para crear la ventana de control y avisar a los controles hospedados.
virtual HWND CreateControlWindow(
HWND hWndParent,
RECT& rcPos);
Parámetros
hWndParent
Identificador de la ventana primaria del control.
rcPos
Rectángulo de posición del control compuesto en coordenadas de cliente relativas a hWndParent.
Valor devuelto
Devuelve un identificador al cuadro de diálogo de control compuesto recién creado.
Comentarios
Este método llama a CComCompositeControl::Create y CComCompositeControl::AdviseSinkMap.
CComCompositeControl::m_hbrBackground
Pincel de fondo.
HBRUSH m_hbrBackground;
CComCompositeControl::m_hWndFocus
Identificador de la ventana que actualmente tiene el foco.
HWND m_hWndFocus;
CComCompositeControl::SetBackgroundColorFromAmbient
Llame a este método para establecer el color de fondo del control compuesto mediante el color de fondo del contenedor.
HRESULT SetBackgroundColorFromAmbient();
Valor devuelto
Devuelve S_OK si es correcto o un error HRESULT en caso de error.
Consulte también
CComControl (clase)
Fundamentos de controles compuestos
Información general sobre la clase