[C con Clase] TABSTOP
Steven Davidson
steven en conclase.net
Jue Jun 21 23:51:26 CEST 2007
Hola Sebastián,
El pasado 2007-06-21 14:04:42, sebastian escribió:
s> Hola, perdon por preguntar tanto, agradesco mucho ante todo. La pregunta
s> que tengo quiza es simple, pero no se.
s> Quiero saber como hacer para que me funcione el tabstop, veo en los
s> ejemplos que cuando agrega controles en un archivo de recurso agrega
s> tabstop y fenomeno, pero, yo agrego un control en el evento WM_CREATE
s> para poder tenerlo en el fichero principal, y le agrego el tabstop, pero
s> despues toco tab y no pasa nada, hay que definir algo mas?? y otra cosa,
Esto funciona sólo en cuadros de diálogo modales, porque este tipo de ventanas interpreta ciertas teclas y combinaciones de teclas para poder navegar en ella. Para cualesquier otras ventanas, no se implementa esta navegación. Lo que tenemos que hacer es aplicar este comportamiento a nuestra ventana. Esto se hace en el bucle 'while' de 'WinMain()', invocando la función 'IsDialogMessage()'. Esto sería,
BOOL bRet;
while( (bRet = GetMessage(&msg, NULL, 0, 0)) != 0 )
{
if( -1 == bRet )
{
// ¡Error!
}
else if( !IsDialogMessage(hwnd, &msg) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
La función 'IsDialogMessage()' ya realiza el comportamiento esperado para poder navegar correctamente y además extrae el mensaje. Técnicamente, esta función ya hace las tareas de "traducir" y "enviar", y por ello no se debe invocar estas dos funciones.
s> como creo el orden en que el tab va de un control a otro?
Para el orden, tendrás que cambiar el orden Z de los controles. Para hacer esto, usa la función 'SetWindowPos()'.
Espero que esto te ayude.
Steven
Más información sobre la lista de distribución Cconclase