Freigeben über


Passing more than one parameter to the script callback

Passing more than one parameter to JScript function isn’t difficult at all after knowing how to pass the parameter. But there is only one trickier part here. I haven’t investigated why this is trickier but it is this way and one must know this other wise the results can be confusing.

Lets say out function foo takes parameter a, b and c and just alerts the values one by one.

function foo(a, b, c)

{

    alert("a = " + a);

    alert("b = " + b);

    alert("c = " + c);

}

Now as earlier we need to use dispParams to pass the parameters. But the trickier part here is the order in which the parameters need to be passed. You need to pass in parameters in exactly opposite order as expected. That is the array of parameter arguments should be in order c, b, a.

So we define one VARIANTARG here as :

// Parameters in exactly opposite order.

VARIANTARG param[3];

param[0].vt = VT_INT;

param[0].intVal = 10; // c

param[1].vt = VT_INT;

param[1].intVal = 20; // b

param[2].vt = VT_INT;

param[2].intVal = 30; // a

Then intialise it in dispParams as

DISPPARAMS dispParams = {

      param, // paramters

      NULL, // Named Parameters = JScript doesn't understand this

      3, // no. of parameters

      0 }; // no. of named parameters

That’s it. Calling Invoke now would call the function with parameters

m_disp->Invoke(

      DISPID_VALUE,

      IID_NULL,

      LOCALE_USER_DEFAULT,

      DISPATCH_METHOD,

      &dispParams,

      NULL,

      NULL,

      NULL);

Sample.zip

Comments

  • Anonymous
    September 25, 2007
    Here are links to a virtual series written by Sheetal, one of the developers in the JScript team on Jscript

  • Anonymous
    December 23, 2007
    Cool topic! ;)