客户现在需要写一个DLL文件,提供给他们的工程师使用,由于这个DLL是进行一些数据处理,有进度操作。
所以希望能随时返回进度状态给他们主程序(比如有1000条数据,处理一条就回调或者发个消息给别人,消息内容就是当前处理的第几条数据这样),像C#委托回调一样的,vc我很少写,不是很懂。请问VC++这样的怎么实现?给点提示。

解决方案 »

  1.   

    是什么环境呢?如果是windows, 那么可以使用消息机制.其它的,还可以使用事件. 
    或者你提供一个查询处理进度的接口, 让它自己编写程序调用的接口来查询当前处理进度.
      

  2.   

    Dll接口中增加一个参数传递回调函数
      

  3.   

    如beginthread等一样传递回调函数,复杂点可以用多线程执行和保存进度
      

  4.   

    void Run(int params[], void(__stdcall *pfnCallback)(int))
    {
    for (int i = 0; i < _SIZE; ++i)
    {
    // do...
    pfnCallback(i);
    }
    }
      

  5.   

    考虑扩展性,定义一个接口类,主程序中实现该类并创建对象,初始化时主程序通过DLL导出函数将这个对象设置给DLL,DLL通过该对象就可以进行回调处理了,这样增加函数也很方便
      

  6.   

    楼上几位说的都对。不知道你的DLL处理数据是同步操作还是异步操作,不过总结下来就是:
    方法一:
    程序告诉DLL它的窗口句柄,DLL发送windows消息来通知程序进度情况。(推荐)
    方法二:
    DLL提供查询进度的函数,程序在一个循环中轮询。(不推荐,效率低)
    方法三:
    使用函数指针或函数对象回调。