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