CComControl (clase)

Esta clase proporciona métodos para crear y administrar controles ATL.

Importante

Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.

Sintaxis

template <class T, class WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
    public WinBase;

Parámetros

T
Clase que implementa el control.

WinBase
Clase base que implementa funciones de ventana. El valor predeterminado es CWindowImpl.

Miembros

Constructores públicos

Nombre Descripción
CComControl::CComControl Constructor.

Métodos públicos

Nombre Descripción
CComControl::ControlQueryInterface Recupera un puntero a la interfaz solicitada.
CComControl::CreateControlWindow Crea una ventana para el control.
CComControl::FireOnChanged Notifica al receptor del contenedor que ha cambiado una propiedad de control.
CComControl::FireOnRequestEdit Notifica al receptor del contenedor que una propiedad de control está a punto de cambiar y que el objeto pregunta al receptor cómo continuar.
CComControl::MessageBox Llame a este método para crear, mostrar y operar un cuadro de mensaje.

Comentarios

CComControl es un conjunto de funciones auxiliares de control útiles y miembros de datos esenciales para controles ATL. Al crear un control estándar o un control DHTML mediante el Asistente para controles ATL, el asistente derivará automáticamente la clase de CComControl. CComControl deriva la mayoría de sus métodos de CComControlBase.

Para obtener más información sobre cómo crear un control, consulte el Tutorial ATL. Para obtener más información sobre el Asistente para proyectos ATL, consulte el artículo Crear un proyecto ATL.

Para obtener una demostración de los miembros de datos y métodos CComControl, consulte el ejemplo de CIRC.

Jerarquía de herencia

WinBase

CComControlBase

CComControl

Requisitos

Encabezado: atlctl.h

CComControl::CComControl

Constructor .

CComControl();

Comentarios

Llama al constructor CComControlBase, pasando el miembro de datos m_hWnd heredado a través de CWindowImpl.

CComControl::ControlQueryInterface

Recupera un puntero a la interfaz solicitada.

virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);

Parámetros

iid
[in] GUID de la interfaz que se solicita.

ppv
[out] Puntero al puntero de interfaz identificado por iid o NULL si la interfaz no se encuentra.

Comentarios

Solo administra interfaces de la tabla de asignación COM.

Ejemplo

// Retrieve the control's IOleObject interface. Note interface 
// is automatically released when pOleObject goes out of scope

CComPtr<IOleObject> pOleObject;
ControlQueryInterface(IID_IOleObject, (void**)&pOleObject);

CComControl::CreateControlWindow

De forma predeterminada, crea una ventana para el control mediante una llamada a CWindowImpl::Create.

virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);

Parámetros

hWndParent
[in] Identificador de la ventana primaria o propietaria. Se debe proporcionar un identificador de ventana válido. La ventana de control se limita al área de su ventana primaria.

rcPos
[in] Tamaño inicial y posición de la ventana que se va a crear.

Comentarios

Invalide este método si desea hacer algo más que crear una sola ventana, por ejemplo, crear dos ventanas, una de las cuales se convierte en una barra de herramientas para el control.

Ejemplo

RECT rc = {10,10,210,110};
HWND hwndParent, hwndControl;

// get HWND of control's parent window from IOleInPlaceSite interface
m_spInPlaceSite->GetWindow(&hwndParent);
hwndControl = CreateControlWindow(hwndParent, rc);

CComControl::FireOnChanged

Notifica al receptor del contenedor que ha cambiado una propiedad de control.

HRESULT FireOnChanged(DISPID dispID);

Parámetros

dispID
[in] Identificador de la propiedad que se ha modificado.

Valor devuelto

Uno de los valores HRESULT estándar.

Comentarios

Si la clase de control se deriva de IPropertyNotifySink, este método llama a CFirePropNotifyEvent::FireOnChanged para notificar a todas las interfaces IPropertyNotifySink conectadas que la propiedad de control especificada ha cambiado. Si la clase de control no se deriva de IPropertyNotifySink, este método devuelve S_OK.

Este método es seguro para llamar aunque el control no admita puntos de conexión.

Ejemplo

STDMETHODIMP CMyControl::put_MyText(BSTR newVal)
{
   // store newVal in CComBstr member
   m_bstrMyText = newVal;

   // note the DISPID for the MyText property is 3 in this example
   FireOnChanged(3);

   return S_OK;
}

CComControl::FireOnRequestEdit

Notifica al receptor del contenedor que una propiedad de control está a punto de cambiar y que el objeto pregunta al receptor cómo continuar.

HRESULT FireOnRequestEdit(DISPID dispID);

Parámetros

dispID
[in] Identificador de la propiedad que está a punto de cambiar.

Valor devuelto

Uno de los valores HRESULT estándar.

Comentarios

Si la clase de control se deriva de IPropertyNotifySink, este método llama a CFirePropNotifyEvent::FireOnRequestEdit para notificar a todas las interfaces IPropertyNotifySink conectadas que la propiedad de control especificada está a punto de cambiar. Si la clase de control no se deriva de IPropertyNotifySink, este método devuelve S_OK.

Este método es seguro para llamar aunque el control no admita puntos de conexión.

Ejemplo

STDMETHODIMP CMyControl::put_MyTitle(BSTR newVal)
{
   // the DISPID for MyTitle in this example is 4
   DISPID dispID = 4;

   // make sure we can change the property
   if (FireOnRequestEdit(dispID) == S_FALSE)
      return S_FALSE;

   // store newVal in CComBstr member
   m_bstrMyTitle = newVal;

   // signal that the property has been changed
   FireOnChanged(dispID);

   return S_OK;
}

CComControl::MessageBox

Llame a este método para crear, mostrar y operar un cuadro de mensaje.

int MessageBox(
    LPCTSTR lpszText,
    LPCTSTR lpszCaption = _T(""),
    UINT nType = MB_OK);

Parámetros

lpszText
Texto que se muestra en el cuadro de mensaje.

lpszCaption
Título del cuadro de diálogo. Si es NULL (el valor predeterminado), se usa el título "Error".

nType
Especifica el contenido y el comportamiento del cuadro de diálogo. Consulte la entrada MessageBox en la documentación de Windows SDK para obtener una lista de los diferentes cuadros de mensaje disponibles. El valor predeterminado proporciona un botón Aceptar sencillo.

Valor devuelto

Devuelve un valor entero que especifica uno de los valores de los elementos de menú enumerados en MessageBox en la documentación de Windows SDK.

Comentarios

MessageBox es útil durante el desarrollo y como una forma sencilla de mostrar un mensaje de advertencia o error al usuario.

Consulte también

CWindowImpl (clase)
Información general sobre la clase
CComControlBase (clase)
CComCompositeControl (clase)