100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > html如何调用js的函数返回值 CDHtmlDialog实现调用html中js函数-江湖宵小-搜狐空间...

html如何调用js的函数返回值 CDHtmlDialog实现调用html中js函数-江湖宵小-搜狐空间...

时间:2020-07-03 14:34:55

相关推荐

html如何调用js的函数返回值 CDHtmlDialog实现调用html中js函数-江湖宵小-搜狐空间...

-05-05 14:17

1.在APP的InitInstance()函数中加入AfxEnableControlContainer();以支持ole控件;

2.在CDHtmlDialog::OnInitDialog()中加入SetExternalDispatch(GetIDispatch(TRUE));

3.通过以下函数实现调用js函数:

BOOL CDHtmlDialog::CallJScript(const CString strFunc, _variant_t* pVarResult)

{

CStringArray paramArray;

return CallJScript(strFunc,paramArray,pVarResult);

}

BOOL CDHtmlDialog::CallJScript(const CString strFunc,const CString strArg1,_variant_t* pVarResult)

{

CStringArray paramArray;

paramArray.Add(strArg1);

return CallJScript(strFunc,paramArray,pVarResult);

}

BOOL CDHtmlDialog::CallJScript(const CString strFunc, const CStringArray& paramArray,_variant_t* pVarResult)

{

CComPtr spScript;

if(!GetJScript(spScript))

{

MessageBox("函数GetJScrip调用失败!");

return FALSE;

}

CComBSTR bstrFunc(strFunc);

DISPID dispid = NULL;

HRESULT hr = spScript->GetIDsOfNames(IID_NULL,&bstrFunc,1,

LOCALE_SYSTEM_DEFAULT,&dispid);

if(FAILED(hr))

{

//MessageBox(GetSystemErrorMessage(hr));

return FALSE;

}

INT_PTR arraySize = paramArray.GetSize();

DISPPARAMS dispparams;

memset(&dispparams, 0, sizeof dispparams);

dispparams.cArgs = (UINT)arraySize;

dispparams.rgvarg = new VARIANT[dispparams.cArgs];

for( int i = 0; i < arraySize; i++)

{

CComBSTR bstr = paramArray.GetAt(arraySize - 1 - i); // back reading

bstr.CopyTo(&dispparams.rgvarg[i].bstrVal);

dispparams.rgvarg[i].vt = VT_BSTR;

}

amedArgs = 0;

EXCEPINFO excepInfo;

memset(&excepInfo, 0, sizeof excepInfo);

_variant_t vaResult;

UINT nArgErr = (UINT)-1; // initialize to invalid arg

hr = spScript->Invoke(dispid,IID_NULL,0,

DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);

delete [] dispparams.rgvarg;

if(FAILED(hr))

{

//MessageBox(GetSystemErrorMessage(hr));

return FALSE;

}

if(pVarResult)

{

*pVarResult = vaResult;

}

return TRUE;

}

BOOL CDHtmlDialog::GetJScript(CComPtr& spDisp)

{

if( m_spHtmlDoc==NULL )

return FALSE;

HRESULT hr = m_spHtmlDoc->get_Script(&spDisp);

ATLASSERT(SUCCEEDED(hr));

return SUCCEEDED(hr);

}

4.调用实例:

CallJScript("alert","test");

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。