Condividi tramite


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 delle gerarchie

CWnd::DefWindowProc

CWnd::SubclassDlgItem

CWnd::Attach

CWnd::PreSubclassWindow

CWnd::UnsubclassWindow