title: MFC: Display output of a process asynchronously(concurrently) while process is in execution in a win32 text area (mfc application)
body: <p>I want to develop an application in MFC which could start a lengthy console process and give its output concurrently on a text area of 32bit windows application.</p>
  
  <p>I used pipes, but it display the output only after the process has terminated.
  I tried _popen, it works for console based application, but not compatible with win32 application.</p>
  
  <p>while searching internet, I found numerous code using CLR, but I need some way in MFC, without use of .Net.. Plz help.</p>
  
  <p>THANKS in Advance :-)</p>
  
  <p>Here's my code that start the application:</p>
  
  <pre><code>void CAppMgr_BackupsDlg::ExecuteExternalFile(CString csExeName, CString csArguments)
  {
  
  CString csExecute;
  csExecute=csExeName + " " + csArguments;
  
  SECURITY_ATTRIBUTES secattr; 
  ZeroMemory(&amp;secattr,sizeof(secattr));
  secattr.nLength = sizeof(secattr);
  secattr.bInheritHandle = TRUE;
  
  HANDLE rPipe, wPipe;
  
  //Create pipes to write and read data
  CreatePipe(&amp;rPipe,&amp;wPipe,&amp;secattr,0);
  
  STARTUPINFO sInfo; 
  ZeroMemory(&amp;sInfo,sizeof(sInfo));
  PROCESS_INFORMATION pInfo; 
  ZeroMemory(&amp;pInfo,sizeof(pInfo));
  sInfo.cb=sizeof(sInfo);
  sInfo.dwFlags=STARTF_USESTDHANDLES;
  sInfo.hStdInput=NULL; 
  sInfo.hStdOutput=wPipe; 
  sInfo.hStdError=wPipe;
  char command[1024]; 
  strcpy(command, csExecute.GetBuffer(csExecute.GetLength()));
  
  //Create the process here.
  CreateProcess(0, command,0,0,TRUE,
        NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW,0,0,&amp;sInfo,&amp;pInfo);
  CloseHandle(wPipe);
  
  //now read the output pipe here.
  char buf[100];
  DWORD reDword; 
  CString m_csOutput,csTemp;
  BOOL res;
  do
  {
      res=::ReadFile(rPipe,buf,100,&amp;reDword,0);
      csTemp=buf;
      m_csOutput=csTemp.Left(reDword);
              DisplayToTextArea(m_csOutput);
  }
  while(res);
  }
  </code></pre>
  
  <p>PS: I am using Visual studio 2010 on x86 windows 7. I am making this code to be integrated with winPE, therefore strongly need MFC.</p>