CWnd::SubclassWindow
Chiamare tale sottoclasse di una funzione membro "in" una finestra e collegarlo a questo oggetto CWnd.
BOOL SubclassWindow(
HWND hWnd
);
Parametri
- hWnd
Un handle di finestra.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario 0.
Note
Quando una finestra è impostata come sottoclasse dinamicamente, i messaggi di windows saranno destinati a tramite i gestori di messaggi della mappa messaggi e la chiamata di CWnd nella classe di CWnd per primo. I messaggi passati alla classe base verranno passati al gestore di messaggio predefinito nella finestra.
Questa funzione membro associa il controllo di Windows a un oggetto CWnd e sostituisce le funzioni WndProc e AfxWndProc della finestra. La funzione contiene un puntatore a WndProc precedente dell'oggetto CWnd.
Nota
La finestra non è già essere associata a un oggetto MFC quando questa funzione viene chiamata.
Esempio
// 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();
}
Requisiti
Header: afxwin.h