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