我的问题是这样的,我要调用一个DLL进行一些工作,调用和返回不在一个线程中。所以我使用回调函数的方法返回数据。联系DLL的是一个ActiveX控件,因为我使用了回调函数,所以我必须向DLL提供一个静态函数地址。而我要在这个回调函数中产生一个事件,ATL的事件是在类中生成的,我无法在静态函数中调用。请大家帮帮忙。急!或者告诉我类似的可以解决ActiveX异步调用DLL返回数据并且可以产生事件的办法。

解决方案 »

  1.   

    那你的回调函数不能同时传递参数过去吗?如果可以的话,就传递this指针不就行了,然后在静态函数里面,用pThis->XXXX就可以了啊
      

  2.   

    你说的方法我早就试验过了。
    问题是我没有办法得到ATL生成的类指针。
      

  3.   

    You can use an IDispatch parameter instead of a callback function (in other words, event handler), and call IDispatch::Invoke to call the function (in other words, fire the event), which calls your function indirectly in its implementation. A typical example is AJAX (Asynchronous JavaScript and XML).
      

  4.   

    COM 支持连接点对象的啊,功能类似回调函数。
    继承 IDISPATCH 做一个出接口就行了,很方便的
      

  5.   

    另外说一句,我现在没办法让静态函数传递动态生成的类的指针。
    -----------------------------------------------------------
    我看明白你的意思了。这个很简单。你可以声明一个全局的类指针,然后在你动态生成的时候,把这个全局的类指针给赋值一下.你的静态函数可以很方便的访问到这个全局变量,如果为非NULL,则可以用它来FireEvent了.;)