高手!在COM中怎样传入一个回调函数,在ATL中是怎样定义的。

解决方案 »

  1.   

    我想传递回调函数指针是有违COM的本意的。回调函数仅是C++的概念,而COM不是只有C++实现的(否则COM也不会那么复杂)。所以传入回调函数指针这一举动在COM里是不适宜的。COM提供了一个相应的机制,就是connection point,其本质和回调函数的本质是一样的。所以,你应该在你的组件里实现connection point,客户端代码实现event sink,这样,你就可以在COM里做回调函数做的事情了。
      

  2.   

    出接口,ATL实现很容易
    或加个函数把接口Marshel过去
      

  3.   

    ATL中实现的Event机制就是一个典型的出接口的例子。
    实现起来非常容易。