Compartir a través de


CWnd::SubclassWindow

Llame a esta subclase de la función miembro “dinámicamente” una ventana y adjuntela a este objeto de CWnd .

BOOL SubclassWindow(
   HWND hWnd 
);

Parámetros

  • hWnd
    Un identificador de la ventana.

Valor devuelto

Distinto de cero si la función es correcta; si no 0.

Comentarios

Cuando una ventana tiene subclases dinámicamente, las ventanas que los mensajes distribuirán a través del mensaje de los entity_CWnd asignan y se llama a los controladores de mensajes en la clase de los entity_CWnd primero.Los mensajes que se pasan a la clase base se pasarán al controlador de mensajes predeterminado en la ventana.

Esta función miembro asocia el control de Windows a un objeto de CWnd y reemplaza WndProc de la ventana y AfxWndProc funciona.La función almacena un puntero a WndProc antiguo en el objeto de CWnd .

[!NOTA]

La ventana no se debe estar ya un objeto MFC cuando esta función se denomina.

Ejemplo

// The following code shows how to subclass the edit control and list box
// controls inside a combo box. It uses WM_CTLCOLOR for subclassing.
// CSuperComboBox represents the combo box
HBRUSH CSuperComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
   if (nCtlColor == CTLCOLOR_EDIT)
   {
      //Edit control
      if (m_edit.GetSafeHwnd() == NULL)
         m_edit.SubclassWindow(pWnd->GetSafeHwnd());
   }
   else if (nCtlColor == CTLCOLOR_LISTBOX)
   {
      //ListBox control
      if (m_listbox.GetSafeHwnd() == NULL)
         m_listbox.SubclassWindow(pWnd->GetSafeHwnd());
   }

   HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
   return hbr;
}

void CSuperComboBox::OnDestroy()
{
   //unsubclass edit and list box before destruction
   if (m_edit.GetSafeHwnd() != NULL)
      m_edit.UnsubclassWindow();
   if (m_listbox.GetSafeHwnd() != NULL)
      m_listbox.UnsubclassWindow();
   CComboBox::OnDestroy();
}

Requisitos

encabezado: afxwin.h

Vea también

Referencia

Clase de CWnd

Gráfico de jerarquía

CWnd::DefWindowProc

CWnd::SubclassDlgItem

CWnd::Attach

CWnd::PreSubclassWindow

CWnd::UnsubclassWindow