[C con Clase] Uso del tabulador en el API de windows
Steven Davidson
srd4121 en njit.edu
Lun Abr 20 19:19:52 CEST 2009
Hola Miguel,
Miguel Ángel Guerrero wrote:
> Hola, me llamo Miguel. Acabo de apuntarme a las listas de correo y no
> se todavía muy bien cómo va. La cuestión es que tengo una duda y
Ante todo, bienvenido al grupo.
> quiero ver si alguien puede ayudarme. Estoy haciendo una pequeña
> aplicación en el API de windows para aprender cómo funciona y me
> encuentro que no puedo pasar con el tabulador de un control a otro
> cuando programo los controles directamente con CreateWindowEx a pesar
> de marcar dichos controles con el estilo WS_TABSTOP. Alguien sabe por
> qué y cómo puedo solucionarlo. Gracias.
>
Supongo que estás creando una ventana pariente que contendrá controles -
ventanas hijas - en su interior, en el área del cliente. El problema es
que usar TAB y SHIFT+TAB para "navegar" por los controles realmente
forma parte del comportamiento de un cuadro de diálogo.
La solución es invocar 'IsDialogMessage()' en el bucle 'while' en
'WinMain()'. Esto es,
int WINAPI WinMain( ... )
{
...
while( GetMessage(&msg, NULL, 0, 0) != 0 )
{
if( !IsDialogMessage(hwnd, &msg) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
return (int)msg.wParam;
}
Como puedes ver, no nos interesa adentrarnos en el procedimiento de
ventana de nuestra aplicación si el mensaje recibido hace alusión al
comportamiento de un cuadro de diálogo.
Espero que esto te sirva.
Steven
Más información sobre la lista de distribución Cconclase