Buenos días:
Pongo un ejemplo de lo que pretendo hacer y no consigo.
Estamos en un dialogo modal, en el que hay varios gets y botones, y un setkey(chr("v"), funcion())
Lo que pretendo es que cuando toma el control la "funcion" hace su tarea y al acabar no le queden pulsaciones del teclado por procesar.
He usado la funcion hb_KeyClear() pero no veo que vacie la cola de pulsaciones de windows.
¿Sabeis si existe alguna forma de hacer lo que pretendo?
Muchas gracias
Saludos
Vaciar el buffer del teclado
- Antonio Linares
- Site Admin
- Posts: 42574
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 36 times
- Been thanked: 84 times
- Contact:
Re: Vaciar el buffer del teclado
Antonio:
Gracias por la sugerencia, pero si, me mantiene la cola del teclado
Gracias.
Un saludo
Gracias por la sugerencia, pero si, me mantiene la cola del teclado
Gracias.
Un saludo
- Antonio Linares
- Site Admin
- Posts: 42574
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 36 times
- Been thanked: 84 times
- Contact:
Re: Vaciar el buffer del teclado
Desde C se haría asi:
Code: Select all | Expand
#include <windows.h>
void VaciarMensajesTeclado() {
MSG msg;
// Itera sobre los mensajes de teclado que están en la cola y los remueve.
while (PeekMessage(&msg, NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE)) {
// Puedes procesarlos si es necesario, o simplemente descartarlos.
}
}
- Antonio Linares
- Site Admin
- Posts: 42574
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 36 times
- Been thanked: 84 times
- Contact:
Re: Vaciar el buffer del teclado
Para probarlo desde Harbour:
Code: Select all | Expand
#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
void VaciarMensajesTeclado( void ) {
MSG msg;
// Itera sobre los mensajes de teclado que están en la cola y los remueve.
while (PeekMessage(&msg, NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE)) {
// Puedes procesarlos si es necesario, o simplemente descartarlos.
}
}
HB_FUNC( VACIATECLADO )
{
VaciarMensajesTeclado();
}
#pragma ENDDUMP