CWnd::SubclassWindow
Chamar essa subclasse da função de membro “” dinamicamente uma janela e anexá-la a esse objeto de CWnd .
BOOL SubclassWindow(
HWND hWnd
);
Parâmetros
- hWnd
Um identificador para a janela.
Valor de retorno
Diferente de zero se a função é com êxito; se não 0.
Comentários
Quando uma janela tem sido derivado dinamicamente, as mensagens do windows rotearão através do mapa da mensagem de CWnd e chamarão manipuladores de mensagem na classe de CWnd primeiro.As mensagens que são passados para a classe base serão passados para o manipulador de mensagem padrão na janela.
Essa função de membro anexa o controle do windows a um objeto de CWnd e substitui funções de WndProc e de AfxWndProc da janela.A função armazena um ponteiro para WndProc antigo no objeto de CWnd .
Observação |
---|
A janela não já deve ser anexado a um objeto MFC quando essa função é chamada. |
Exemplo
// 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();
}
Requisitos
Cabeçalho: afxwin.h