Fortsetzung von this question, bin ich verwirrt, ob DISPID_VALUE
auf IDispatch::Invoke()
für Skriptfunktionen und Eigenschaften (JavaScript in meinem Fall) kann als Standard und zuverlässig für den Aufruf der eigentlichen Funktion, die durch die IDispatch
dargestellt wird?
Wenn ja, wird das irgendwo in MSDN erwähnt?ist DISPID_VALUE zuverlässig für den Aufruf von IDispatchs aus Skripten?
Bitte beachten Sie, dass die Frage ist, ob dieses Verhalten erwartet werden kann, nicht, was einige Schnittstellen, die ich nicht im Voraus wissen kann, aussehen könnte.
Ein einfacher wäre Anwendungsfall sein:
// 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: versucht, die Frage zu klären.
Dass DISPID_VALUE im Allgemeinen konsistent sein sollte, hilft mir nicht - kann ich erwarten, dass es z. die eigentliche Funktion auf allen 'IDispatch's, die Skriptfunktionen darstellen? –
Meiner Erfahrung nach, ja, solange sie Skriptobjekte direkt repräsentieren. Wie ich in meiner Antwort unten erwähnte, sind IDispatch-Objekte, die Sie über ConnectionPoints erhalten, ein wenig anders – taxilian