使用COM组件怎么调用JavaScript函数

  介绍

这期内容当中小编将会给大家带来有关使用COM组件怎么调用JavaScript函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强> 1,组件方(c++)

组件一个的方法在IDL中定义:

[id (2)], HRESULT  longCalc([在],DOUBLE  v1,[在],DOUBLE  v2,(,,可选),VARIANT  scriptCallback);

组件一个的方法实现:

//,假设回调原型为:,,//,scriptCallbackFunc (LONG  nCurrentProgress, LONG  nTotalProgress,, BSTR  bstrProgressName),,//,此方法由JS脚本来实现,   CA: STDMETHODIMP  longCalc  (v1, DOUBLE  DOUBLE  v2, VARIANT  scriptCallback),   {,   CComPtr<才能;IDispatch>, spCallback;,   if 才能;(scriptCallback.vt ==, VT_DISPATCH),   ,,,,spCallback =, scriptCallback.pdispVal;,   ,,   ,//才能,参数准备,   varResult; CComVariant 才能;   CComVariant 才能avarParams [3];,   avarParams才能[0],=,“开始计算股票”,,,,,//,bstrProgressName    avarParams才能[0].vt =, VT_BSTR;,   avarParams才能[1],=,100,,,,,,,,,,,,,,,,//,nTotalProgress    avarParams才能[1].vt =, VT_I4;,   avarParams才能[2],=,0;,,,,,,,,,,,,,,,,,//,nCurrentProgress    avarParams才能[2].vt =, VT_I4;,   DISPPARAMS 才能;params =, {, avarParams, NULL,, 3,, 0,},,   ,   ,   如果(spCallback),才能   ,,,,spCallback→Invoke (0,,,   ,,,,,,,IID_NULL,,,   ,,,,,,,LOCALE_USER_DEFAULT,,,   ,,,,,,,DISPATCH_METHOD,,,   ,,,,,,,,对位,女士,,,varResult,,空,,NULL),,   ,   BOOL 才能;bFinished =,假的,,   ,,   ,   而才能(! bFinished),   ,{大敌;   ,,,,//,计算工作…,   ,,,,睡眠,(1000);   ,,,,v1 =, v1 + v2,,   ,,   ,,,//,回调客户,   ,,,如果(spCallback),   ,,,{,   ,,,,,avarParams[0],=,“正在计算股票…”,,   ,,,,,avarParams [2],=, 0;,   ,,,,,spCallback→Invoke (0,,,   ,,,,,,,,,,,,IID_NULL,,,   ,,,,,,,,,,,,LOCALE_USER_DEFAULT,,,   ,,,,,,,,,,,,DISPATCH_METHOD,,,   ,,,,,,,,,,,,,对位,女士,,,varResult,,空,,NULL),,   ,,,,},   ,   ,,,,如果(…),   ,,,,,,,,bFinished =,真的,,   ,,},//,while 好吧!,   ,   ,,return  S_OK,   }

<强> 2,客户方(JS)

& lt; script 语言=癹avascript"祝辞,   & lt; !,,   ,,//,符合回调原型:scriptCallbackFunc    ,,function  scfDisplayProgress (nCurrentProgress, nTotalProgress,, bstrProgressName),   ,,,{   ,,,,,,window.status =, bstrProgressName  +,“:”+ (nCurrentProgress  * 100/TotalProgress),,   ,,},   ,,   ,,//,创建组件并执行longCalc    ,,var  objA =, new  ActiveXObject (“MyCom.A”),,   ,   ,,,//,使用回调:,执行时在IE状态栏显示进度,   ,,,objA只longCalc  (100,, 200,, scfDisplayProgress);,,   ,   ,,,//,不使用回调,   ,,,objA只longCalc  (100,, 200);,,//4?   & lt;/script>

上述就是小编为大家分享的使用COM组件怎么调用JavaScript函数了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

使用COM组件怎么调用JavaScript函数