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.

Hinweis

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

Hierarchiediagramm

CWnd::DefWindowProc

CWnd::SubclassDlgItem

CWnd::Attach

CWnd::PreSubclassWindow

CWnd::UnsubclassWindow