如果有一个函数
如下:void func()
{
    for (int i = 0; i < 100; i++)
    {
          //....do something....
    }    for (int k = 0; k < 200; k++)
    {
          //....do something....
    }//........n个 for 语句    for (int z = 0; z < n; z++)
    {
          ///....do something....
    }
}
我现在只知道这个函数,但是无法确定这个函数内部实际会有多少的工作要做然而现在我想在调用这个函数之后,然后知道它当前的进度(因为这个函数要完成的工作可能会很长,可能要1分钟)所以我想要用一个进度条来显示当前这个函数已经完成了多少的工作!当前在这个函数内部直接操作进度条是最常用的方法,但是类似这样的函数有成千上万个每一个都不一样,每一个都可能会有N个FOR语句
那我要怎么样用一种通用的方法来知道一个函数当前完成的进度呢?请高人指点!小弟就只有这么点分了!真是不好意思

解决方案 »

  1.   

    自定义一个消息,响应消息(在这里做进度条的进度处理),要是要求不是很精确的话可以在每个for循环完后用PostMessage给进度条窗口发自定义消息,要是要更精确一点的话在for循环内,比如循环10次发一次消息.
      

  2.   

    由于你不能确切地知道函数需要的总运行时间 你的进度条是没法做的 不然就只能一开始进度0 忽然函数执行完毕变成100 这也没啥意义
    这功能若实在很重要的话 建议你分析这个EXE文件 然后把每一个函数有多少条指令计算出来 按照每条指令的平均执行时间来估算一下 这方法也许可行