1 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
ActiveX控件調(diào)用JavaScript函數(shù)的方法
1.向ActiveX注冊(cè)JS函數(shù):
在ActiveX中添加接口方法 - void RegisterFunction(BSTR bstrFuncName, IDispatch* dispFunc);
JavaScript代碼聲明一個(gè)函數(shù),并調(diào)用RegisterFunction接口向ActiveX注冊(cè)該函數(shù),供ActiveX調(diào)用。
2.保存注冊(cè)的函數(shù),ActiveX使用CComDispatchDriver對(duì)象保存注冊(cè)的JS函數(shù)(IDispatch接口指針)
CComDispatchDriver m_Func1;
void RegisterFunction(BSTR bstrFuncName, IDispatch* dispFunc)
{
if (bstrFuncName == "1")
m_Func1 = dispFunc;
}
3.調(diào)用注冊(cè)的函數(shù),ActiveX使用CComDispatchDriver::InvokeN函數(shù)調(diào)用注冊(cè)的函數(shù)
以下是對(duì)接受一個(gè)無(wú)符號(hào)整型參數(shù)的JS函數(shù)的調(diào)用:
VARIANT varArg[1];
varArg[0].vt = VT_UINT; varArg[0].uintVal = 1;
try{
m_Func1.InvokeN((DISPID)DISPID_VALUE, varArg, 1);
}
catch(...){}
4.注意,對(duì)JS函數(shù)的調(diào)用必須在ActiveX程序的主線程中執(zhí)行!
添加回答
舉報(bào)