Compartilhar via


CWnd::SubclassWindow

Chamar essa subclasse da função de membro “” dinamicamente uma janela e anexá-la a esse objeto de CWnd .

BOOL SubclassWindow( 
   HWND hWnd  
);

Parâmetros

  • hWnd
    Um identificador para a janela.

Valor de retorno

Diferente de zero se a função é com êxito; se não 0.

Comentários

Quando uma janela tem sido derivado dinamicamente, as mensagens do windows rotearão através do mapa da mensagem de CWnd e chamarão manipuladores de mensagem na classe de CWnd primeiro. As mensagens que são passados para a classe base serão passados para o manipulador de mensagem padrão na janela.

Essa função de membro anexa o controle do windows a um objeto de CWnd e substitui funções de WndProc e de AfxWndProc da janela. A função armazena um ponteiro para WndProc antigo no objeto de CWnd .

Dica

A janela não já deve ser anexado a um objeto MFC quando essa função é chamada.

Exemplo

// 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

Cabeçalho: afxwin.h

Consulte também

Referência

CWnd Class

Gráfico da hierarquia

CWnd::DefWindowProc

CWnd::SubclassDlgItem

CWnd::Attach

CWnd::PreSubclassWindow

CWnd::UnsubclassWindow