Vaciar el buffer del teclado

Post Reply
groiss
Posts: 231
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA
Has thanked: 1 time

Vaciar el buffer del teclado

Post by groiss »

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
User avatar
Antonio Linares
Site Admin
Posts: 42575
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

Post by Antonio Linares »

Has probado con SysRefresh() ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
groiss
Posts: 231
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA
Has thanked: 1 time

Re: Vaciar el buffer del teclado

Post by groiss »

Antonio:
Gracias por la sugerencia, pero si, me mantiene la cola del teclado
Gracias.
Un saludo
User avatar
Antonio Linares
Site Admin
Posts: 42575
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

Post by Antonio Linares »

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.
    }
}
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 42575
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

Post by Antonio Linares »

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   
regards, saludos

Antonio Linares
www.fivetechsoft.com
groiss
Posts: 231
Joined: Tue Sep 01, 2009 7:55 am
Location: Plasencia - ESPAÑA
Has thanked: 1 time

Re: Vaciar el buffer del teclado

Post by groiss »

Perfecto.
Ha funcionado perfecto.
Muchisimas gracias.
Un saludo
Post Reply