A derivação de controles de um controle padrão
sistema autônomo ocorre com qualquer CWnd - derivada classe, você pode modificar o comportamento do controle derivando uma nova classe de uma classe de controle existente.
Para criar uma classe derivada de controle
Derivar a classe de uma classe de controle existente e, opcionalmente, substituir o Criar membro função para que ele fornece os argumentos necessários para a classe base Criar função.
Fornece funções de membro do manipulador de mensagens e entradas de MAP da mensagem para modificar o comportamento do controle em resposta a mensagens específicas do Windows.See Mapeamento de mensagens para funções.
Fornecer novas funções de membro para estender a funcionalidade do controle (opcional).
O uso de um controle derivado de uma caixa de diálogo requer trabalho extra.Os tipos e as posições dos controles em uma caixa de diálogo normalmente são especificadas em um recurso de modelo de diálogo.Se você criar uma classe derivada de controle, não é possível especificá-lo em um modelo de caixa de diálogo, pois o compilador de recurso sabe nada sobre sua classe derivada.
Para colocar o controle derivado em uma caixa de diálogo
Incorpore um objeto da classe derivada de controle na declaração da classe derivada de diálogo.
Substituir o OnInitDialog função de membro em sua classe de caixa de diálogo para telefonar o SubclassDlgItem função de membro para o controle derivado.
SubclassDlgItem"dinamicamente subclasses" um controle criado a partir de um modelo de caixa de diálogo. Quando um controle dinamicamente é uma subclasse, você nos conectar ao Windows, processa algumas mensagens dentro de seu próprio aplicativo e, em seguida, passa as mensagens restantes para o Windows.Para obter mais informações, consulte o SubclassDlgItem função de membro de classe CWnd no Referência da MFC.O exemplo a seguir mostra como você pode escrever uma substituir de OnInitDialog para chamar SubclassDlgItem:
BOOL CSubDialog::OnInitDialog()
{
CDialog::OnInitDialog();
m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);
return TRUE;
}
Como o controle derivado está incorporado na classe de caixa de diálogo, ela será construída quando a caixa de diálogo é construída e serão destruído quando a caixa de diálogo é destruída.comparar esse código de exemplo do Adicionando controles em mão.