CWnd::SubclassWindow
Appelez cette sous-classe de fonction membre « dynamiquement » une fenêtre et joignez- à cet objet d' CWnd .
BOOL SubclassWindow(
HWND hWnd
);
Paramètres
- hWnd
Un handle dans la fenêtre.
Valeur de retour
Une valeur différente de zéro si la fonction est réussie ; sinon 0.
Notes
Lorsqu'une fenêtre est sous-classée dynamiquement, les messages windows conduiront dans la table des messages d'CWnd et appellent des gestionnaires de messages dans la classe d'CWnd en premier. Les messages passés à la classe de base sont passés au gestionnaire de messages dans la fenêtre.
Cette fonction membre joint le contrôle Windows à un objet d' CWnd et remplace WndProc de la fenêtre et AfxWndProc s'exécute. La fonction stocke un pointeur vers WndProc ancien dans l'objet d' CWnd .
Notes
La fenêtre n'est pas déjà être attachée à un objet MFC lorsque cette fonction est appelée.
Exemple
// 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();
}
Configuration requise
Header: afxwin.h