Adicionando controles manualmente
Você pode adicionar controles para uma caixa de diálogo com o publicador da caixa de diálogo ou para adicioná-los você mesmo, com código.
Para criar um objeto você mesmo de controle, você normalmente inserirá o objeto control C++ na caixa de diálogo c criando ou no objeto de quadro- janela. Como vários outros objetos na estrutura, os controles exigem a construção de dois estágios. Você deve chamar a função de membro de Criar de controle como parte da criação da janela pai da caixa de diálogo ou do quadro. Para caixas de diálogo, isso é feito normalmente em OnInitDialog, e para o windows do quadro, em OnCreate.
O exemplo a seguir mostra como você pode declarar um objeto de CEdit na declaração de classe de uma classe derivada da caixa de diálogo e chamar a função de membro de Criar em OnInitDialog. Como o objeto de CEdit é declarado como um objeto inserido, ele é criado automaticamente quando o objeto da caixa de diálogo será construído, mas ainda deve ser inicializado com sua própria função de membro de Criar .
class CCustomDialog : public CDialog
{
CEdit m_edit;
virtual BOOL OnInitDialog();
};
A seguinte função de OnInitDialog configura um retângulo, em seguida chama Criar para criar o controle de edição do windows e anexá-lo ao objeto não inicializada de 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;
}
Após criar o objeto de edição, você também pode definir o foco de entrada para o controle chamando a função de membro de SetFocus . Finalmente, você retorna 0 de OnInitDialog para mostrar que você definir o foco. Se você retorna um valor diferente de zero, o gerenciador da caixa de diálogo define o foco para o primeiro item na lista de controle do item da caixa de diálogo. Na maioria dos casos, você desejará adicionar controles para as caixas de diálogo ao publicador da caixa de diálogo.