Kontynuując od this question, jestem zdezorientowany, czy DISPID_VALUE
na IDispatch::Invoke()
dla funkcji skryptu i właściwości (JavaScript w moim przypadku) można uznać za standardowe i niezawodne do wywoływania rzeczywistej funkcji, która jest reprezentowana przez IDispatch
?
Jeśli tak, czy jest to wymienione w dowolnym miejscu w MSDN?jest wiarygodne DISPID_VALUE dla wywołań na IDispatchs ze skryptów?
Należy pamiętać, że pytanie dotyczy tego, czy można się spodziewać takiego zachowania, a nie tego, jak mogą wyglądać niektóre interfejsy, z których nie mogę wiedzieć wcześniej.
Prosty przypadek użycia może być:
// 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);
edit: próbował wyjaśnić kwestię.
Wartość DISPID_VALUE na ogół powinna być stała, nie pomaga mi - czy mogę oczekiwać, że będzie ona konsekwentnie wywoływać np. faktyczna funkcja wszystkich 'IDispatch'ów, które reprezentują funkcje skryptowe? –
Z mojego doświadczenia wynika, że tak długo, jak są one bezpośrednio reprezentatywne dla obiektów skryptów. Jak wspomniałem w mojej odpowiedzi poniżej, obiekty IDispatch, które dostajesz przez ConnectionPoints są nieco inne – taxilian