Aracılığıyla paylaş


CWnd::SubclassWindow

Bu üye "alt sınıfı dinamik olarak" pencere çağrısı ve bunun için ekleme CWnd nesnesi.

BOOL SubclassWindow(
   HWND hWnd 
);

Parametreler

  • hWnd
    Pencere tanıtıcısı.

Dönüş Değeri

Sıfır olmayan bir değer işlevi başarılı olursa; Aksi halde 0.

Notlar

Bir pencere dinamik olarak subclassed olduğunda, windows iletilerini aracılığıyla yönlendirecek CWnd's map ileti ve ileti işleyicileri çağıran CWnd's sınıf ilk. Temel sınıfa geçirilen iletiler için varsayılan ileti işleyicisi penceresinde gönderilir.

Bu üye işlevi Windows denetime yapıştıracağını bir CWnd nesne ve pencerenin değiştirir WndProc ve AfxWndProc fonksiyonlar. İşlev işaretçisi eski depolar WndProc , CWnd nesnesi.

Not

Bu işlev çağrıldığında penceresi zaten mfc nesneye bağlı olmalıdır değil.

Örnek

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

Gereksinimler

Başlık: afxwin.h

Ayrıca bkz.

Başvuru

CWnd Sınıfı

Hiyerarşi grafik

CWnd::DefWindowProc

CWnd::SubclassDlgItem

CWnd::Attach

CWnd::PreSubclassWindow

CWnd::UnsubclassWindow