CWnd::SubclassWindow

Chiamare tale sottoclasse di una funzione membro "in" una finestra e collegarlo a questo oggetto CWnd.

BOOL SubclassWindow(
   HWND hWnd 
);

Parametri

  • hWnd
    Un handle di finestra.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario 0.

Note

Quando una finestra è impostata come sottoclasse dinamicamente, i messaggi di windows saranno destinati a tramite i gestori di messaggi della mappa messaggi e la chiamata di CWnd nella classe di CWnd per primo.I messaggi passati alla classe base verranno passati al gestore di messaggio predefinito nella finestra.

Questa funzione membro associa il controllo di Windows a un oggetto CWnd e sostituisce le funzioni WndProc e AfxWndProc della finestra.La funzione contiene un puntatore a WndProc precedente dell'oggetto CWnd.

[!NOTA]

La finestra non è già essere associata a un oggetto MFC quando questa funzione viene chiamata.

Esempio

// 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();
}

Requisiti

Header: afxwin.h

Vedere anche

Riferimenti

Classe CWnd

Grafico della gerarchia

CWnd::DefWindowProc

CWnd::SubclassDlgItem

CWnd::Attach

CWnd::PreSubclassWindow

CWnd::UnsubclassWindow