• Sábado 14 de Diciembre de 2024, 17:38

Autor Tema:  Como Controlar Un Mensaje Del Raton En Un Bucle  (Leído 1777 veces)

sergiolopez

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Como Controlar Un Mensaje Del Raton En Un Bucle
« en: Martes 21 de Junio de 2005, 13:35 »
0
Hola probeblemente este preguntando una chorrada pero me estoy iniciande en visual c++ y no soy capaz de controlar un mensaje del raton cuando en mi dialogo se esta ejecutando un bucle en una función creada por mi para ese dialogo. agradecería que alguien me pudiese ayudar.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Como Controlar Un Mensaje Del Raton En Un Bucle
« Respuesta #1 en: Martes 21 de Junio de 2005, 14:09 »
0
podrias ser un poco mas especifico? :huh:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

sergiolopez

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Como Controlar Un Mensaje Del Raton En Un Bucle
« Respuesta #2 en: Martes 21 de Junio de 2005, 14:59 »
0
Si con el class wizard creo un WM_LBUTTONDOWN este se ejecuta cuando clico sobre mi cuadro de dialogo. Pero se esta ejecutando un bucle dentro de una función no se me ejecuta el WM_LBUTTONDOWN. Por ejemplo estoy leyendo del puerto serie y eso esta dentro de un bucle que solo saldrá de el si pongo una variable a falso. Esta variable la quiero poner a falso cuando clique el boton del ratón, pero como estoy dentro del bucle no se ejecuta la función WM_LBUTTONDOWN.No se si te aclaro algo. Pero de todas formas gracias.

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Como Controlar Un Mensaje Del Raton En Un Bucle
« Respuesta #3 en: Martes 21 de Junio de 2005, 15:43 »
0
Hola

El problema que tienes es que el programa se queda esperando dentro de ese bucle a que le llegue la variable de salida del bucle que tiene que venir de pulsar el boton ,como Visual C++ asi como todas las aplicaciones de windows 32 funcionan mediante el paso de mensajes, nunca cojera el mensaje que se le pasa al pulsar un boton.
Deberas apañartelas para que el programa pueda salir del bucle y hacer un polling de los mensajes, si no se te quedara en el bucle indefinidamente.
Una manera de hacerlo seria lanzando un hilo (thread) que hiciera el cometido del bucle y asi el hilo principal se quedaria esperando los mensajes

Espero que te sirva

chao :hola:

sergiolopez

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Como Controlar Un Mensaje Del Raton En Un Bucle
« Respuesta #4 en: Martes 21 de Junio de 2005, 15:53 »
0
Donde podría obtener información o ejemplos claros sobre los hilos (thread).
Muchas gracias.

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Como Controlar Un Mensaje Del Raton En Un Bucle
« Respuesta #5 en: Martes 21 de Junio de 2005, 16:04 »
0
Hola

Yo solo he trabajado con hilos en linux asi que no puedo explicarte como funcionan en win32

De todas maneras buscando por INET puedes encontrar mucha informacion

como esta pagina: (parece un buen ejemplo)

http://www.microsoft.com/spanish/msdn/comu...ices/art130.asp

Esta pagina y la biblioteca de msdn te puede ser de gran ayuda

saludos

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Como Controlar Un Mensaje Del Raton En Un Bucle
« Respuesta #6 en: Miércoles 22 de Junio de 2005, 03:36 »
0
Bueno yo diria que no debe usar hilos ( aunque no se mucho de C++) sino que esto mismo me pasaba en C#.NET y la solución era usar el metodo DoEvents

Lo que debe hacer es meter en el bucle un llamado a a ese metodo DoEvents existe para C++ y encontre esto:
Código: Text
  1.  
  2.  void CApplication::DoEvents()
  3. {
  4.  MSG msg;
  5.     while ( ::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
  6.     {
  7.         if ( !PumpMessage( ) )
  8.         {
  9.             ::PostQuitMessage(0);
  10.             break;
  11.         }
  12.     }
  13.     // let MFC do its idle processing
  14.     for (long lIdle = 0; OnIdle(lIdle); lIdle++ ){;}
  15. }
  16.  
  17.  

En este link:
http://rcorral.mvps.org/
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Como Controlar Un Mensaje Del Raton En Un Bucle
« Respuesta #7 en: Miércoles 22 de Junio de 2005, 18:02 »
0
Hola

No sabia que existiera tal funcion. Es bueno saberlo por si se da el caso ...

De todas maneras sigo pensando que un hilo en background optimiza mas la tarea (aunque es algo complicado de implementar) permitiendo que corran en "paralelo" las dos tareas.La parte negativa de esto es que tienes que hacer que los dos hilos se comuniquen mediante una variable global , memoria compartida, tuberias etc etc

Estuve mirando por msdn y las MFC tienen su propia clase para hacer hilos (CWinThread), aqui te dejo el link por si te interesa:

http://msdn.microsoft.com/library/default...._CWinThread.asp

Un saludo