Visual c++ 在CProgressCtrl上完成更新后关闭对话框

Visual c++ 在CProgressCtrl上完成更新后关闭对话框,visual-c++,mfc,Visual C++,Mfc,我正在使用MFC,如何检查进度条已完成更新100%,我想在完成任务时关闭对话框,我正在使用 if(mProgress.GetPos()==100) { Sleep(3000); EndDialog(IDD_DIALOG_PROGRESS_BAR); } 但它关闭对话框的进度大约是90%,我知道:进度条控件的位置不是屏幕上的物理位置,而是如何做到这一点?请帮帮我。可能您的程序太忙了,无法复制到移动设备,因此用户界面落后于计划。尝试将此代码添加到复制循环中,以便UI有时

我正在使用MFC,如何检查进度条已完成更新100%,我想在完成任务时关闭对话框,我正在使用

 if(mProgress.GetPos()==100)
{   

    Sleep(3000);
    EndDialog(IDD_DIALOG_PROGRESS_BAR);

}

但它关闭对话框的进度大约是90%,我知道:进度条控件的位置不是屏幕上的物理位置,而是如何做到这一点?请帮帮我。

可能您的程序太忙了,无法复制到移动设备,因此用户界面落后于计划。尝试将此代码添加到复制循环中,以便UI有时间跟上:

    MSG msg;
    // Handle dialog messages
    while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    {
      if(!IsDialogMessage(&msg))
      {
        TranslateMessage(&msg);
        DispatchMessage(&msg);  
      }
    }

Sleep3000阻塞GUI 3秒钟的原因是什么?您在CProgressCtrl上设置了什么范围和步骤?为什么检查CProgressCtrl是否完成?通常情况下,您会执行一些操作,并在执行过程中更新CProgressCtrl。因此,完成的主要来源是您的操作,而不是CProgressCtrl。好的,Werner Henze,我的程序可以将文件从PC发送到移动设备,它有一个进度条来显示进度。当发送文件完成时,我想关闭进度条,但是进度条仍然不能更新到100%并关闭。您应该考虑使用单独的线程来处理可能需要一段时间的过程。