Compartilhar via


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

  1. 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.

  2. 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.

  3. 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.

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

  2. 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.

Consulte também

Conceitos

Controles (MFC)

Referência

Fazer e usar controles