Compartilhar via


Adicionando controles manualmente

Você pode adicionar controles a uma caixa de diálogo com o editor de diálogo ou adicioná-los por conta própria, com código.

Para criar um objeto de controle por conta própria, você geralmente inserirá o objeto de controle C++ em uma caixa de diálogo C++ ou objeto de janela de quadro. Como muitos outros objetos na estrutura, os controles exigem construção em dois estágios. Você deve chamar a função membro Criar do controle como parte da criação da caixa de diálogo pai ou da janela de quadro. Para caixas de diálogo, isso geralmente é feito em OnInitDialog e, para janelas de quadro, em OnCreate.

O exemplo a seguir mostra como você pode declarar um objeto CEdit na declaração de classe de uma classe de caixa de diálogo derivada e, em seguida, chamar a função membro Create em OnInitDialog. Como o objeto CEdit é declarado como um objeto inserido, ele é construído automaticamente quando o objeto de caixa de diálogo é construído, mas ainda deve ser inicializado com a própria função membro Create.

class CCustomDialog : public CDialog
{
   CEdit m_edit;
   virtual BOOL OnInitDialog();
};

A função OnInitDialog a seguir configura um retângulo e, em seguida, chama Create para criar o controle de edição do Windows e anexá-lo ao objeto não inicializado CEdit.

BOOL CCustomDialog::OnInitDialog()
{
   CDialog::OnInitDialog();
   CRect rect(85, 110, 180, 210);

   m_edit.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |
                     ES_AUTOHSCROLL | WS_BORDER,
                 rect, this, IDC_EXTRA_EDIT);
   m_edit.SetFocus();
   return FALSE;
}

Depois de criar o objeto de edição, você também pode definir o foco de entrada para o controle chamando a função membro SetFocus. Por fim, você retorna 0 de OnInitDialog para mostrar que definiu o foco. Se você retornar um valor diferente de zero, o gerenciador de caixa de diálogo definirá o foco como o primeiro item de controle na lista de itens da caixa de diálogo. Na maioria dos casos, você deseja adicionar controles às caixas de diálogo com o editor de diálogo.

Confira também

Criando e usando controles
Controles
CDialog::OnInitDialog