Continuando da this question, sono confuso se DISPID_VALUE
su IDispatch::Invoke()
per le funzioni di script e proprietà (JavaScript nel mio caso) può essere considerato standard e affidabile per richiamare la funzione effettiva che è rappresentata dal IDispatch
?
Se sì, è menzionato ovunque in MSDN?è DISPID_VALUE affidabile per richiami su IDispatch da script?
Si prega di notare che la domanda è se questo comportamento può essere previsto, non ciò che alcune interfacce non posso sapere in anticipo potrebbe essere simile.
Un semplice caso d'uso potrebbe essere:
// 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: cercato di chiarire la questione.
Che DISPID_VALUE dovrebbe essere in genere coerente non mi aiuta - posso aspettarmi che invochi costantemente ad es. la funzione effettiva su tutti gli IDispatch che rappresentano le funzioni di script? –
Secondo la mia esperienza, sì, purché siano direttamente rappresentativi degli oggetti script. Come accennato nella mia risposta di seguito, gli oggetti IDispatch che si ottengono tramite ConnectionPoint sono leggermente diversi – taxilian