Freigeben über


CWnd::SubclassWindow

Rufen Sie diese Memberfunktions" dynamisch Unterklasse" ein Fenster auf und fügen Sie sie in diesem CWnd-Objekt.

BOOL SubclassWindow(
   HWND hWnd 
);

Parameter

  • hWnd
    Ein Handle für das Fenster.

Rückgabewert

Ungleich 0 (null), wenn die Funktion erfolgreich; 0 andernfalls.

Hinweise

Wenn ein Fenster dynamisch erstellt wird, werden Fenstermeldungen durch die Meldungszuordnung von CWnd weitergeleitet und Meldungshandler in der Klasse von CWnd zuerst aufgerufen.Meldungen, die an die Basisklasse übergeben werden, sind auf dem Meldungshandler im Fenster übergeben.

Diese Memberfunktion fügt das Windows-Steuerelement zu einem CWnd-Objekt auf und ersetzt WndProc und AfxWndProc-Funktionen des Fensters.Die Funktion speichert einen Zeiger auf WndProc im alten CWnd-Objekt.

HinweisHinweis

Das Fenster darf nicht zu einem MFC-Objekt bereits angefügt werden, wenn diese Funktion aufgerufen wird.

Beispiel

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

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CWnd-Klasse

Hierarchien-Diagramm

CWnd::DefWindowProc

CWnd::SubclassDlgItem

CWnd::Attach

CWnd::PreSubclassWindow

CWnd::UnsubclassWindow