[C con Clase] Duda con winapi

Salvador Pozo salvador en conclase.net
Dom Oct 21 17:06:01 CEST 2018


El pasado 2018-10-21 12:56:59, ruben escribió:

Hola:

r> Estoy aprendiendo a usar winapi con el curso de cconclase y es realmente bueno.

Gracias, me alegra saber que te gusta.

r> Se me a presentado un problema que no tengo claro como gestionarlo. Estoy acostumbrado a programar en consola y cuando quieres hacer un bucle que tarde su tiempo, simplemente hay que esperar a que termine.
r> El caso es que si activo un bucle con WM_COMAND, la aplicación se cuelga hasta que el bucle finalice.

Las tareas de manipulación de mensajes, el procedimiento de ventana, deberían ejecutarse lo más rápidamente posible, precisamente para evitar que la aplicación se quede congelada durante mucho tiempo sin responder a las acciones del usuario.

Cuando una tarea requiera un tiempo apreciable para completarse se debería asignar a un cuadro de diálogo o a un hilo (thread) paralelo, o a un conjunto de ambas cosas.

Ejemplos de este tipo de tareas son las copias de archivos, descargas desde la red o instalación de aplicaciones.

Ayuda mucho en estos casos mostrar barras de progresos y mensajes que den información para que el usuario sepa que las tareas se están llevando a término con normalidad (o que no, en caso de que haya algún problema).

La respuesta a tu problema son los hilos. Puedes ver una primera aproximación en este enlace:
http://articulos.conclase.net/?tema=juegos&art=threads&pag=000

Como los hilos pueden compartir memoria con el programa que los ha creado, es relativamente sencillo compartir información entre el procedimiento de ventana y los hilos, de modo que se pueda monitorizar el avance de las tareas realizadas por cada hilo.

Espero que te sirva de ayuda, pregunta de nuevo si necesitas alguna aclaración. 

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net
Blog con Clase: http://blogconclase.wordpress.com
Con Clase: http://conclase.net


Más información sobre la lista de distribución Cconclase