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