Compartir a través de


Derivar controles de un control estándar

Como con cualquier CWnd- clase derivada, puede modificar el comportamiento de control derivando una nueva clase de una clase de control existente.

Para crear una clase de control derivada

  1. Derive la clase de una clase de control existente y reemplace opcionalmente la función miembro de crear de modo que proporcione los argumentos necesarios a la función de crear de la clase base.

  2. Proporciona las funciones miembro de controladores de mensajes y las entradas de mensaje- mapa para modificar el comportamiento de control en respuesta a los mensajes específicos de Windows. Vea Asignar mensajes a funciones.

  3. Proporciona nuevas funciones miembro para extender la funcionalidad del control (opcional).

Mediante un control derivado de un cuadro de diálogo requiere trabajo adicional. Especificar los tipos y las posiciones de controles en un cuadro de diálogo normalmente en un recurso de la diálogo- plantilla. Si crea una clase de control derivada, no podrá especificarlo en una plantilla de diálogo porque el compilador de recursos no sabe nada sobre la clase derivada.

  1. Inserte un objeto de la clase control derivada en la declaración de la clase derivada del diálogo.

  2. Reemplace la función miembro de OnInitDialog en la clase de diálogo para llamar a la función miembro de SubclassDlgItem para el control derivado.

SubclassDlgItem “crea una subclase dinámicamente” un control creado a partir de una plantilla de cuadro de diálogo. Cuando se crea un control subclases dinámicamente, el enlace en Windows, procesa algunos mensajes dentro de dispone de la aplicación, pasa los restantes mensajes en Windows. Para obtener más información, vea la función miembro de SubclassDlgItem de la clase CWnd en la referencia de MFC. El ejemplo siguiente se muestra cómo se puede escribir un reemplazo de OnInitDialog para llamar a SubclassDlgItem:

BOOL CSubDialog::OnInitDialog()
{
   CDialog::OnInitDialog();

   m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);

   return TRUE;
}

Dado que el control derivado se inserta en la clase de diálogo, se construido cuando se construye el cuadro de diálogo, y se destruirá cuando se destruye el cuadro de diálogo. Compare este código de ejemplo en Agregar Controles a mano.

Vea también

Referencia

Crear y usar controles

Conceptos

Controles (MFC)