Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Threads o hilos en VC++

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

Threads o hilos en VC++

Notapor oscargim el Mar Oct 16, 2007 11:42 pm

Alguien sabe como usar hilos en VC++ 6.0 MFC basado en dialogos?
lo quie quiero es que mientras hace una consulta pesada a una BD ejecute otra accion como un Activx en flash o algo asi para que aguarde hasta que termine de ejecutarla,
oscargim
Usuario Muy Activo
Usuario Muy Activo
 
Mensajes: 113
Registrado: Mar May 09, 2006 5:53 am

Re: Threads o hilos en VC++

Notapor ivancp el Jue Oct 18, 2007 4:34 pm

No es necesario que utilices una clase CWinThread para hacer una sola tarea, para eso puedo recomendarte que utilices la funcion AfxBeginThread.

1. Crear un control de tipo static con la ID: IDC_MENSAJE.
2. Crear la funcion Ejecutar tal como se muestra

Código: Seleccionar todo
UINT Ejecutar(LPVOID pDialogo)
{
   static bool bEjecutando = false;
   if(bEjecutando)
      return 0;
   bEjecutando = true;


   CTuDialogoDlg *pDlg = (CThreadDemoDlg *)pDialogo;

   int nPaso = 0;
   while(true)
   {
      CString str;
      str.Format("Ejecutando paso %d",nPaso);
      if(pDlg && ::IsWindow(pDlg->m_hWnd))
      {
         pDlg->GetDlgItem(IDC_MENSAJE)->SetWindowText(str);
      }
      Sleep(500);
      if(nPaso++ > 10)
      {
         break;
      }
      
   }
   bEjecutando = false;
   return 0;
}


3. Invocar a asa funcion desde alguna parte.

Código: Seleccionar todo
void CTuDialogoDlg::OnIniciar()
{
   AfxBeginThread(Ejecutar,this);   
}


Nota: La variable bEjecutando es para evitar que se se ejecute la funcion nuevamente mientras esta procesando.

Ahi puedes poner el codigo que necesitas para ejecutar la consulta.
ivancp
Programador Experimentado
Programador Experimentado
 
Mensajes: 371
Registrado: Jue Sep 06, 2007 12:57 pm

Notapor oscargim el Jue Oct 18, 2007 7:46 pm

MUCHISIMAS GRACIAS
tu respuesta es de lo mejor, cortita y consisa
oscargim
Usuario Muy Activo
Usuario Muy Activo
 
Mensajes: 113
Registrado: Mar May 09, 2006 5:53 am


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados