Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Assim como acontece com qualquer classe derivada de CWnd, você pode modificar o comportamento de um controle derivando uma nova classe de uma classe de controle existente.
Para criar uma classe de controle derivada
Derive sua classe de uma classe de controle existente e, opcionalmente, substitua a função membro
Createpara que ela forneça os argumentos necessários para a funçãoCreateda classe base.Forneça funções de membro do manipulador de mensagens e entradas de mapa de mensagens para modificar o comportamento do controle em resposta a mensagens específicas do Windows. Consulte Mapeamento de Mensagens para Funções.
Forneça novas funções de membro para estender a funcionalidade do controle (opcional).
Usar um controle derivado em uma caixa de diálogo requer trabalho extra. Os tipos e posições de controles em uma caixa de diálogo normalmente são especificados em um recurso de modelo de caixa de diálogo. Se você criar uma classe de controle derivada, não poderá especificá-la em um modelo de caixa de diálogo, pois o compilador de recursos não sabe nada sobre sua classe derivada.
Para colocar seu controle derivado em uma caixa de diálogo
Insira um objeto da classe de controle derivada na declaração da classe de diálogo derivada.
Substitua a função de membro
OnInitDialogna classe de diálogo para chamar a função de membroSubclassDlgItempara o controle derivado.
SubclassDlgItem define uma "subclasse dinamicamente" para um controle criado com base em um modelo de caixa de diálogo. Quando um controle é subclasseado dinamicamente, você se conecta ao Windows, processa algumas mensagens em seu próprio aplicativo e, em seguida, passa as mensagens restantes para o Windows. Para obter mais informações, consulte a função de membro SubclassDlgItem da classe CWnd na Referência do MFC. O seguinte exemplo mostra como você pode escrever uma substituição de OnInitDialog para chamar SubclassDlgItem:
BOOL CSubDialog::OnInitDialog()
{
CDialog::OnInitDialog();
m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);
return TRUE;
}
Como o controle derivado é inserido na classe de diálogo, ele será construído quando a caixa de diálogo for construída e será destruído quando a caixa de diálogo for destruída. Compare este código com o exemplo em Adicionar Controles à Mão.