Derivando controles a partir de um controle padrão
Como com qualquer CWnd- classe derivada, você pode alterar o comportamento de controle com uma nova classe de uma classe existente do controle.
Para criar uma classe derivada de controle
Derivar a sua classe de uma classe existente de controle e substituir opcionalmente a função de membro de Criar de modo que forneça os argumentos necessários à função de Criar da classe base.
Fornecer funções de membro retornadas a e entradas retornadas mapa para alterar o comportamento de controle em resposta a mensagens específicas do windows. Consulte Mensagens de mapeamento a funções.
Fornecer novas funções de membro para estender a funcionalidade de controle (opcional).
Usar um controle derivada em uma caixa de diálogo requer o trabalho adicional. Os tipos e as posições dos controles em uma caixa de diálogo são especificados normalmente em um recurso de diálogo- modelo. Se você criar uma classe derivada de controle, você não poderá especificá-la em um modelo da caixa de diálogo desde que o compilador de recursos não conhece nada sobre sua classe derivada.
Para colocar o controle derivada em uma caixa de diálogo
Inserir um objeto de classe derivada de controle na declaração da sua classe derivada da caixa de diálogo.
Substitua a função de membro de OnInitDialog em sua classe da caixa de diálogo para chamar a função de membro de SubclassDlgItem para o controle derivada.
subclasses deSubclassDlgItem “” dinamicamente um controle criado de um modelo da caixa de diálogo. Quando um controle subclassed dinamicamente, você engancha no windows, processa algumas mensagens em seu próprio aplicativo, então passa as outras mensagens sobre como windows. Para obter mais informações, veja a função de membro de SubclassDlgItem da classe CWndna referência de MFC. O exemplo a seguir 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 derivada é inserido na classe da caixa de diálogo, será construído quando a caixa de diálogo é construída, e será destruída quando a caixa de diálogo é destruída. Compare esse código no exemplo em Adicionando controles a mão.