Derivação de controles de um controle padrão

Como com qualquer CWnd-derivado 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

  1. Derivar a classe de uma classe de controle existente e, opcionalmente, substituir o criar função de membro para que ele fornece os argumentos necessários para a classe base criar função.

  2. Fornece funções de membro de manipulador de mensagens e entradas de mapa da mensagem para modificar o comportamento do controle em resposta a mensagens específicas do Windows.Consulte mapeamento mensagens para funções.

  3. Fornece novas funções de membro para estender a funcionalidade do controle (opcional).

Usar um controle derivado de uma caixa de diálogo requer trabalho extra.Os tipos e posições de 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 diálogo desde que o compilador de recurso não sabe nada sobre sua classe derivada.

  1. Incorpore um objeto da classe derivada de controle na declaração de sua classe derivada de caixa de diálogo.

  2. Substituir o OnInitDialog função de membro em sua classe de caixa de diálogo para chamar o SubclassDlgItem função de membro para o controle derivado.

SubclassDlgItem"dinamicamente subclasses" um controle criado de um modelo de diálogo.Quando um controle dinamicamente uma subclasse, conectar ao Windows, algumas mensagens de processo dentro de seu próprio aplicativo e passar mensagens restantes para o Windows.Para obter mais informações, consulte o SubclassDlgItem função de membro da classe CWnd na Referência MFC.O exemplo a seguir mostra como você pode escrever uma substituição do OnInitDialog para chamar SubclassDlgItem:

BOOL CSubDialog::OnInitDialog()
{
   CDialog::OnInitDialog();

   m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);

   return TRUE;
}

Como é incorporado controle derivado da classe de diálogo, ele será construído quando a caixa de diálogo é construída e serão destruído quando a caixa de diálogo é destruída.Compare esse código de exemplo na adicionando o controles por mão.

Consulte também

Referência

Fazer e usar controles

Conceitos

Controles (MFC)