Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al igual que con cualquier clase derivada de CWnd, puede modificar el comportamiento de un control derivando una nueva clase de una clase de control existente.
Para crear una clase de control derivada
Derive la clase de una clase de control existente y, opcionalmente, invalide la
Createfunción miembro para que proporcione los argumentos necesarios a la función de claseCreatebase.Proporcione funciones miembro del controlador de mensajes y entradas en el mapa de mensajes para modificar el comportamiento del control en respuesta a mensajes específicos de Windows. Consulte Asignación de mensajes a funciones.
Proporcione nuevas funciones miembro para ampliar la funcionalidad del control (opcional).
El uso de un control derivado en un cuadro de diálogo requiere trabajo adicional. Normalmente, los tipos y posiciones de los controles de un cuadro de diálogo se especifican en un recurso de plantilla de diálogo. Si crea una clase de control derivada, no puede especificarla en una plantilla de diálogo, ya que el compilador de recursos no sabe nada sobre la clase derivada.
Para colocar el control derivado en un cuadro de diálogo
Inserte un objeto de la clase de control derivada en la declaración de la clase de diálogo derivada.
Invalide la función miembro
OnInitDialogen la clase de diálogo para llamar a la función miembroSubclassDlgItempara el control derivado.
SubclassDlgItem "crea subclases de forma dinámica" de un control creado a partir de una plantilla de diálogo. Cuando un control se subclase dinámicamente, se enlaza a Windows, se procesan algunos mensajes dentro de su propia aplicación y, a continuación, se pasan los mensajes restantes a Windows. Para obtener más información, vea la función miembro SubclassDlgItem de la clase CWnd en la Referencia de MFC. En el ejemplo siguiente, se muestra cómo podría escribir una invalidación de OnInitDialog para llamar a SubclassDlgItem:
BOOL CSubDialog::OnInitDialog()
{
CDialog::OnInitDialog();
m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);
return TRUE;
}
Dado que el control derivado está incrustado en la clase de diálogo, se construirá cuando se construya el cuadro de diálogo y se destruirá cuando se destruya el cuadro de diálogo. Compare este código con el ejemplo de Agregar controles por mano.