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