| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
kunta41 Cdt

Registrado: 29 Ene 2007Mensajes: 22
|
Publicado: Mar 29 Abr, 2008 4:07 pm Asunto: La aplicación no hace caso a eventos |
|
|
Hola:
Tengo una aplicación que muestra en pantalla (a traves de un RIchEdit) lo que se recibe a traves de un puerto UDP.
El programa me funciona bien, pero cuando se reciben muchos mensajes, la aplicación no hace caso de ningun evento que no sea el mostrar en pantalla lo que se recibe por UDP. Asi no puedo conseguir parar mediante un boton lo que sale por pantalla. Pense que la solución sería utilizar:
Application->ProcessMessages();
para actualizar los mensajes pendientes, pero me he dado cuenta que esto lo que hace es procesar los mensajes pendientes de OTRAS APLICACIONES que no sea esta.
¿Se os ocurre alguna forma de obligar a la aplicacion a hacer caso a un evento?
Otra forma sería que cuando se recibe el evento de recepción por UDP ver si se ha pulsado una tecla. ¿Sabeis como se puede hacer esto?
Muchas gracias |
|
| Volver arriba |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Mar 29 Abr, 2008 4:50 pm Asunto: |
|
|
hola, a la funcion que recibe los datos, ponelo en un Thread..
saludos tor _________________ Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr) |
|
| Volver arriba |
|
 |
kunta41 Cdt

Registrado: 29 Ene 2007Mensajes: 22
|
Publicado: Mie 30 Abr, 2008 8:28 am Asunto: |
|
|
Gracias por tu respuesta Tor, ¿no hay otra solucion que ponerla en un thread?
Gracias |
|
| Volver arriba |
|
 |
kunta41 Cdt

Registrado: 29 Ene 2007Mensajes: 22
|
Publicado: Mie 30 Abr, 2008 2:23 pm Asunto: |
|
|
Me contesto yo solo.
En un hilo de este mail he leido la solución:
void ProcessMessages(void)
{
MSG msg;
while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
Se le llama a esta función cuando quiero que procese otros eventos de la aplicación.
EN mi caso como quiero que procese los eventos de raton teclado y pintar sería:
void ProcessMessages(void)
{
MSG msg;
while (PeekMessage(&msg, 0, 0, 0,PM_QS_INPUT|PM_QS_PAINT|PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
Para ver las opciones de los eventos que quieres que se procesen:
http://msdn.microsoft.com/en-us/library/ms644943(VS.85).aspx
Un saludo a todos |
|
| Volver arriba |
|
 |
|