Pasar con ENTER al siguiente casillero

Estoy haciendo mis pininos en Visual C++, He creado una ventana de dialogo con muchos controles CEDit, y quisiera saber como puedo pasar de un casillero al siguiente pulsando ENTER en lugar del TAB.

1 respuesta

Respuesta
1
Primero, lo que debes hacer es sobreescribir la función OnOK() de tu diálogo. Ves que cuando pulsas al Enter tu dialogo se cierra. Así que tienes que sobreescribir esta función y añadirla una funcionalidad distinta. Para ello, vete al .h donde tengas definido tu clase de dialogo.
Escribe el prototipo de tu función, esto es:
void OnOK();
y dirigete al .cpp de tu dialogo y escribe el cuerpo de la función.
void CMiDialogo::OnOK()
{
//funciones para alternar el foco entre los controles.
}
Para alternar el foco entre los controles tienes varias funciones:
-SetFocus, de la clase CWnd, clase base de CDialog. Una ventana (o control) que llame a esta función obtiene el foco.
-NextDlgCtrl, de la clase CDialog, mueve el foco al siguiente control del diálogo
-GotoDlgCtrl, de la clase CDialog, se mueve el foco al control especificado como parámetro
Esta excelente t respuesta, pero aun me queda una inquietud, como se tipo de control (CEdit, CList, etc), es el que presiono el ENTER, pues el ENTER solo debe pasarse entre casilleros de Edición.
Gracias de antemano por tu respuesta.
De nuevo jastol1
Muy fácil.
Cuando creas un control sabes que tienes que asignarle un identificador.
Entonces para saber que control tenía el foco cuando se pulsó ENTER, lo único que tienes que hacer es obtener ese identificador. Para ello usa la función GetDlgCtrlID().
Primero obtén la ventana que tiene el foco así:
CWnd * pWnd=GetFocus();
y después obtén el identificador del control:
UINT nID=pWnd->GetDlgCtrlID();
Y eso es todo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas