c++ - español - ¿Cómo establecer el enfoque inicial del control en la ventana en particular?
qgis español (1)
Hay dos formas de establecer el enfoque inicial en un control particular en MFC.
El primer método, y el más simple, es aprovechar el orden de las pestañas de sus controles. Cuando utiliza el Editor de recursos en Visual Studio para diseñar un diálogo, puede asignar a cada control un índice de pestaña. El control con el índice de pestaña más bajo recibirá automáticamente el enfoque inicial. Para establecer el orden de tabulación de sus controles, seleccione "Orden de tabulación" en el menú "Formato" o presione Ctrl + D.
El segundo método, un poco más complicado, es anular la función
OnInitDialog
en la clase que representa su diálogo. En esa función, puede establecer el enfoque de entrada en cualquier control que desee, y luego devolverFALSE
para indicar que ha establecido explícitamente el enfoque de entrada en uno de los controles en el cuadro de diálogo. Si devuelveTRUE
, el marco establece automáticamente el enfoque en la ubicación predeterminada, descrita anteriormente como el primer control en el cuadro de diálogo. Para establecer el enfoque en un control en particular, llame al métodoGotoDlgCtrl
y especifique su control. Por ejemplo:BOOL CMyDialog::OnInitDialog() { CDialog::OnInitDialog(); // Add your initialization code here // ... // Set the input focus to your control GotoDlgCtrl(GetDlgItem(IDC_EDIT)); // Return FALSE because you manually set the focus to a control return FALSE; }
Tenga en cuenta que no debe establecer el foco en un cuadro de diálogo simplemente llamando al método
SetFocus
de un control en particular. Raymond Chen explica aquí en su blog por qué es más complicado que eso, y por qué seGotoDlgCtrl
funciónGotoDlgCtrl
(o su equivalente, el mensajeWM_NEXTDLGCTRL
).
Creé una aplicación en la que utilizo el procedimiento de ventana para realizar un seguimiento de todos los controles en la ventana.
Mi pregunta es, ¿cómo establezco inicialmente el enfoque en el primer control creado en la ventana?