介绍
这期内容当中小编将会给大家带来有关使用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函数了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。