Udostępnij za pośrednictwem


CWnd::SubclassWindow

Wywołanie tej funkcji Członkowskich "dynamicznie podklasy" okna i dołączyć go do tego CWnd obiektu.

BOOL SubclassWindow(
   HWND hWnd 
);

Parametry

  • hWnd
    Dojście do okna.

Wartość zwracana

Niezerowa, jeśli funkcja jest pomyślne; 0 inaczej.

Uwagi

Gdy okno jest dynamicznie subclassed, wiadomości systemu windows będzie trasuj CWnd's wiadomości mapy i wywoływać programy obsługi wiadomości w CWnd's najpierw klasy.Wiadomości, które są przekazywane do klasy podstawowej zostanie przekazany do obsługi wiadomości domyślne w oknie.

Ta funkcja Członkowskich przywiązuje formant Windows CWnd obiektu i zastępuje okno WndProc i AfxWndProc funkcji.Funkcja przechowuje wskaźnik do starego WndProc w CWnd obiektu.

[!UWAGA]

Okno nie należy dołączyć do obiektu MFC po wywołaniu tej funkcji.

Przykład

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

Wymagania

Nagłówek: afxwin.h

Zobacz też

Informacje

Klasa CWnd

Wykres hierarchii

CWnd::DefWindowProc

CWnd::SubclassDlgItem

CWnd::Attach

CWnd::PreSubclassWindow

CWnd::UnsubclassWindow