继续从this question,我很困惑DISPID_VALUE
IDispatch::Invoke()
脚本函数和属性(在我的情况下,JavaScript)可以被认为是标准和可靠的调用由IDispatch
代表的实际功能?
如果是的话,是否在MSDN中的任何地方提及?DISPID_VALUE对于从脚本调用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);
编辑:试图澄清问题。
DISPID_VALUE通常应该是一致的并不能帮助我 - 我是否可以期望它始终如一地调用代表脚本功能的所有'IDispatch'的实际功能? – 2009-11-05 17:56:36
根据我的经验,是的,只要它们直接代表脚本对象即可。正如我在下面的回答中所提到的,通过ConnectionPoints获得的IDispatch对象有点不同 – taxilian 2009-12-25 06:15:41