代码之家  ›  专栏  ›  技术社区  ›  Georg Fritzsche

DISPID_VALUE对于从脚本调用IDispatchs可靠吗?

  •  5
  • Georg Fritzsche  · 技术社区  · 16 年前

    继续从 this question ,我很困惑是否 DISPID_VALUE IDispatch::Invoke() IDispatch

    一个简单的用例是:

    // usage in JavaScript
    myObject.attachEvent("TestEvent", function() { alert("rhubarb"); }); 
    
    // handler in ActiveX, MyObject::attachEvent(), C++
    incomingDispatch->Invoke(DISPID_VALUE, IID_NULL, LOCALE_SYSTEM_DEFAULT,
                             DISPATCH_METHOD, par, res, ex, err);
    

    编辑:

    4 回复  |  直到 9 年前
        1
  •  3
  •   meklarian    16 年前

    根据我自己的经验,传递给attachEvent()的Javascript函数应该始终保持一致——接收到的“函数”对象只能有一个与其匹配的可调用方法。因此,您只能找到默认方法,DISPID为0。Javascript函数通常没有成员函数,尽管我相信有一种方法可以做到这一点。如果它确实有成员函数,您将以与对象上的成员函数相同的方式看到它们。根据expando函数的规则,JScript中的成员函数将始终与IDispatchEx保持一致,因为添加到对象中的任何函数都算作expandos。

    IDispatchEx interface @ MSDN

        2
  •  2
  •   Will Gorman    16 年前

    DISPID_VALUE

        3
  •  1
  •   taxilian    16 年前

    <object>

    使用连接点时,有问题的IDispatch对象将期望事件被触发到与它们附加到IDispatch物体上的DISPID相同的DISPID。。

    http://code.google.com/p/firebreath/source/browse/src/ActiveXPlugin/JSAPI_IDispatchEx.h

        4
  •  0
  •   i_am_jorf    16 年前
    推荐文章