如何实现进度对话框

进度对话框最核心的东西是没完成一小步的时候都要把消息队列中的消息取出来处理,否则界面就跟死了一样。


int CProgressDlg::StepIt()
  {
   PumpMessages();
   int iResult = m_Progress.StepIt();
   UpdatePercent(iResult+m_nStep);
   return iResult;
  }
  void CProgressDlg::PumpMessages()
  {
   // Must call Create() before using the dialog
   ASSERT(m_hWnd!=NULL);
   MSG msg;
   // Handle dialog messages
   while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
   {
   if(!IsDialogMessage(&msg))
   {
   TranslateMessage(&msg);
   DispatchMessage(&msg); 
   }
   }
  }


 

你可能感兴趣的:(如何实现进度对话框)