Agregar controles a mano
Puede agregar controles a un cuadro de diálogo con el editor de diálogos o agregarlos usted mismo, con código.
Para crear un objeto de control usted mismo, normalmente insertará el objeto de control de C++ en un objeto de cuadro de diálogo ventana de marco de C++. Al igual que muchos otros objetos del marco, los controles requieren construcción en dos fases. Debe llamar a la función miembro Crear del control como parte de la creación del cuadro de diálogo primario o la ventana de marco. En el caso de los cuadros de diálogo, esto suele hacerse en OnInitDialog y en ventanas de marco, en OnCreate.
En el ejemplo siguiente se muestra cómo se puede declarar un objeto CEdit
en la declaración de clase de una clase de diálogo derivada y, a continuación, llamar a la función miembro Create
en OnInitDialog
. Dado que el objeto CEdit
se declara como un objeto insertado, se construye automáticamente cuando se construye el objeto de diálogo, pero todavía debe inicializarse con su propia función miembro Create
.
class CCustomDialog : public CDialog
{
CEdit m_edit;
virtual BOOL OnInitDialog();
};
La siguiente función OnInitDialog
configura un rectángulo y, a continuación, llama a Create
para crear el control de edición de Windows y adjuntarlo al objeto CEdit
sin inicializar.
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;
}
Después de crear el objeto de edición, también puede establecer el foco de entrada en el control llamando a la función miembro SetFocus
. Por último, devuelve 0 de OnInitDialog
para mostrar que ha fijado el foco. Si devuelve un valor distinto de cero, el administrador de diálogos establece el foco en el primer elemento de control de la lista de elementos de diálogo. En la mayoría de los casos, querrá agregar controles a los cuadros de diálogo con el editor de diálogos.