Geo*_*che 5 c++ com internet-explorer activex
持续这个问题,我很困惑,是否DISPID_VALUE对IDispatch::Invoke()脚本的功能和属性(JavaScript的在我的情况),可以被认为是标准的,可靠的用于调用由所代表的实际作用IDispatch?
如果是,在MSDN的任何地方都提到了吗?
请注意,问题是关于是否可以预期这种行为,而不是事先我不知道的某些界面可能是什么样子.
一个简单的用例是:
// 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);
Run Code Online (Sandbox Code Playgroud)
编辑:试图澄清问题.
如果脚本一致地定义它,那么从脚本调用对象应该是可靠的。MSHTML 中的 JScript/Javascript 应该是这种情况,但不幸的是,关于这个主题的文档确实很少,我手头没有任何可靠的证据。
根据我自己的经验,传递给 AttachEvent() 的 Javascript 函数应该始终保持一致——接收到的“函数”对象只能有一个与其自身匹配的可调用方法。因此,默认方法是您可以找到的唯一方法,DISPID 0。Javascript 函数通常没有成员函数,尽管我确信有一种方法可以实现这一点。如果它确实有成员函数,您将像对象上的成员函数一样看到它们。根据expando函数的规则,JScript中的成员函数将始终与IDispatchEx保持一致,因为添加到对象的任何函数都被视为expando。
| 归档时间: |
|
| 查看次数: |
1713 次 |
| 最近记录: |