我的问题是这样的:
   就是如何做出如拷贝文件那种效果,在拷贝未完成前,进度条不断的更新,拷贝完成后,进度条运行到100%。
   请高手和有经验的赐教!

解决方案 »

  1.   

    http://www.vckbase.com/document/viewdoc/?id=667
      

  2.   

    C/C++ codeint i=0;
    while(i<100)
    {
       i++;
       CProgressCtrl::SetPos(i);
    }等到拷贝完成后,将进度条设置到末尾
    CProgressCtrlCObject  
     └CCmdTarget  
      └CWnd  
      └CProgressCtrl  “进度条控件”是一个窗口,应用程序可以使用这个窗口来表明一个冗长操作的进度。它由一个从左到右,用系统高亮色逐渐填充的矩形组成。
    CProgressCtrl类提供了Windows通用进度条控件的机能。这个控件(也就是CProgressCtrl类)只有对运行在Windows 95和Windows NT 3.51或更高版本下的程序才是有效的。
    进度条控件具有一个范围和一个当前位置。范围代表了操作的整个期间,当前位置代表了应用程序为完成操作已经做完的部分。窗口进程用范围和当前位置来确定用高亮色填充进度条的百分比,以及确定在进度条中所显示的文本(如果有的话)。由于范围和当前位置值是用有符号整数表示的,所以可能的当前位置值的范围是从-217483648到217483647。
    #include <afxcmn.h>CProgressCtrl类成员Construction
    CProgressCtrl 构造一个CProgressCtrl对象   
    Create 创建一个进度条控件并将它与一个CProgressCtrl对象连接   Attributes
    SetRange 为进度条控件设置范围的最小值和最大值,并重画进度条来反映新的范围   
    SetRange32 为进度条控件设置范围的最小值和最大值,并重画进度条来反映新的范围   
    GetRange 获取进度条控件范围的下限和上限   
    GetPos 获取进度条的当前位置   
    SetPos 设置进度条的当前位置并重画进度条来反映新的位置   
    OffsetPos 用一个指定的增量来增加进度条控件的当前位置,并重画此进度条来反映新的位置   
    SetStep 为一个进度条控件指定每一步的增量   Operations
    StepIt 用每一步的增量(参见SetStep)来增加一个进度条控件的当前位置,并重画此进度条来反映新的位置   
      

  3.   

    在CMyDlg类中声明:
    CProgressCtrl m_cpc;复制文件前, 先递归获取文件夹中各文件的总数量nCnt, m_cpc.SetRange32(0,nCnt); 复制过程中统计已复制文件数量nCopied, 同时每复制完成一个文件, 就m_cpc.SetPos(nCopied);
    这样做要求: 复制文件的函数和m_cpc的操作都要放在同一个类CMyDlg中. 如果不想这样, 还可以做一个对话框CPCDlg, 此对话框中放置一个进度条控件, CMyDlg中复制文件时, 不断的发送消息给进度条所在的对话框CPCDlg, 由该对话框类更新进度条控件位置
      

  4.   

    SHFileOperation()可以显示copy时候的进度条http://www.cnblogs.com/rainbowzc/archive/2009/06/11/1501642.html