如下接口定义:
interface ICallbackInterface : IDispatch{
[id(1), helpstring("method ButtonClicked")] HRESULT ButtonClicked(IDispatch* RibbonControl);
[id(2), helpstring("method Test")] HRESULT Test(IDispatch* pRibbon, IPictureDisp** iPic);
};
我想知道,IDispatch这个参数到底是从哪里传到哪里的,IPictureDisp参数在哪里会调用,这两个方法,一个两个参数,一个只有一个,编译器是如何来识别并处理的,谢谢。

解决方案 »

  1.   

    thanks first.编辑器调用的时候要传值吧? IDispatch* pRibbon, IPictureDisp** iPic这两个值到底是传的什么啊,我好困惑,我也知道我COM基础没学好的说。。
      

  2.   

    不是编译器, 在Source里 你自己决定到底调用那个函数(调用了只有,客户端就会有事件)
      

  3.   

    先谢谢。比如,我要调HRESULT Test(IDispatch* pRibbon, IPictureDisp** iPic);
    ,那哪个事件能带出这两个参数?就像windows标准消息那样,鼠标事件发生时,这些参数全部记录在wParam, lParam的高低位里。
      

  4.   

    你理解上有偏差, 你给的接口,是个明显的 回调接口(在COM里也可以称为事件),所以这个事件是你自己触发的
      

  5.   

    谢谢哈。你说的对,这个事件确实是我触发的,只是我不能完全理解,所以出错误时无法解决。比如ButtonClicked,我在在一个button的onAction里触发的。可是这个onAction不是我写的,是office的ribbon里的东西,我不知道里面是什么机制。。
    可能我讲的东西逻辑已经很乱了。。
    oh my god god god....
      

  6.   

    http://blog.vckbase.com/teacheryang/archive/2005/09/01/11756.html
      

  7.   

    我们新定义接口,一般都继承IDispatch, 然后IDispatch内部会调用invoke那几个函数,那我怎么能看看那几个函数事实上是怎么运作的呢,就像单步调试那种看法?