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.
template <class T, class WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
public WinBase;
T
Clase que implementa el control.
WinBase
Clase base que implementa funciones de ventana. El valor predeterminado es CWindowImpl.
Nombre | Descripción |
---|---|
CComControl::CComControl | Constructor. |
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. |
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.
WinBase
CComControl
Encabezado: atlctl.h
Constructor .
CComControl();
Llama al constructor CComControlBase, pasando el miembro de datos m_hWnd
heredado a través de CWindowImpl.
Recupera un puntero a la interfaz solicitada.
virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);
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.
Solo administra interfaces de la tabla de asignación COM.
// 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);
De forma predeterminada, crea una ventana para el control mediante una llamada a CWindowImpl::Create
.
virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);
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.
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.
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);
Notifica al receptor del contenedor que ha cambiado una propiedad de control.
HRESULT FireOnChanged(DISPID dispID);
dispID
[in] Identificador de la propiedad que se ha modificado.
Uno de los valores HRESULT estándar.
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.
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;
}
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);
dispID
[in] Identificador de la propiedad que está a punto de cambiar.
Uno de los valores HRESULT estándar.
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.
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;
}
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);
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.
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.
MessageBox
es útil durante el desarrollo y como una forma sencilla de mostrar un mensaje de advertencia o error al usuario.
CWindowImpl (clase)
Información general sobre la clase
CComControlBase (clase)
CComCompositeControl (clase)