¿Cómo puedo hacer que la ejecución de una tarea en mi progama no me bloquee la ventana?

Para evitarlo lo que tienes que hacer es crear un hilo de ejecución para
realizar la tarea que deja bloqueada la ventana.

Si no quieres complicarte con hilos y la tarea que realizas es de tipo iterativo puedes poner en cada paso de bucle llamadas a la siguiente función, que permite que se procesen los mensajes de ventana de manera que esta no se quede muerta, de todos modos te recomiento que uses los hilos, ya que este método consume mucha CPU. El efecto logrado con el código siguiente es similar al DoEvents de Visual Basic.

void CApplication::DoEvents()
{
 MSG msg;
    while ( ::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
    {
        if ( !PumpMessage( ) )
        {
            ::PostQuitMessage(0);
            break;
        }
    }
    // let MFC do its idle processing
    for (long lIdle = 0; OnIdle(lIdle); lIdle++ ){;}
}

Un comentario sobre “¿Cómo puedo hacer que la ejecución de una tarea en mi progama no me bloquee la ventana?”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *