【问题标题】:Close dialog when completed updating on CProgressCtrl在 CProgressCtrl 上完成更新后关闭对话框
【发布时间】:2014-04-17 08:15:20
【问题描述】:

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

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

    Sleep(3000);
    EndDialog(IDD_DIALOG_PROGRESS_BAR);

}

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

【问题讨论】:

  • 什么是 Sleep(3000) 阻塞 GUI 3 秒?
  • 你在 CProgressCtrl 上设置了什么范围和步长?
  • 为什么要检查 CProgressCtrl 是否完成?通常你有一些动作正在进行,你更新 CProgressCtrl 的进度。所以完成的主要来源是您的操作,而不是 CProgressCtrl。
  • 好的 Werner Henze,我的程序可以将文件从 PC 发送到移动设备,并且它有一个进度条来显示进度。发送文件完成后,我想关闭进度条,但是进度条仍然无法更新到 100% 并关闭。
  • 您应该考虑使用单独的线程来处理可能需要一段时间的处理。

标签: visual-c++ mfc


【解决方案1】:

也许您的程序忙于复制到移动设备,以致用户界面落后于计划。尝试将此代码添加到您的复制循环中,让 UI 有时间赶上:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多