1 首先 .h 文件中定义: 2 3 CComPtr<IHTMLWindow2> m_sphtmlWnd; 4 CComPtr<IHTMLDocument2> m_spHtmlDoc; 5 6 7 8 //方法1 可以取得返回值。。。。。 9 10 //调用方法示例:stringArray为传入参数列表,getSum为js函数,pVarResult 为返回值 11 12 /* CStringArray stringArray; 13 stringArray.RemoveAll(); 14 stringArray.SetSize(5); 15 stringArray[0].Format(L"%d",m_poiStart.x); 16 stringArray[1].Format(L"%d",m_poiStart.y); 17 stringArray[2].Format(L"%d",m_poiEnd.x); 18 stringArray[3].Format(L"%d",m_poiEnd.y); 19 stringArray[4].Format(L"%d",a + 1); 20 CComVariant pVarResult = CallJScript(L"getSum", stringArray);*/ 21 22 bool Cems_mysql_appView::GetJScript(CComPtr<IDispatch>& spDisp) 23 { 24 m_spHtmlDoc = (IHTMLDocument2*)(GetHtmlDocument()); 25 if(m_spHtmlDoc == NULL) 26 { 27 return false; 28 } 29 HRESULT hr = m_spHtmlDoc->get_Script(&spDisp); 30 ATLASSERT(SUCCEEDED(hr)); 31 return SUCCEEDED(hr); 32 } 33 34 CComVariant Cems_mysql_appView::CallJScript(const CString strFunc,const CStringArray& paramArray) 35 { 36 //Getting IDispatch for Java Script objects 37 CComPtr<IDispatch> spScript; 38 if(!GetJScript(spScript)) 39 { 40 return false; 41 } 42 //Find dispid for given function in the object 43 CComBSTR bstrMember(strFunc); 44 DISPID dispid = NULL; 45 HRESULT hr = spScript->GetIDsOfNames(IID_NULL,&bstrMember,1, 46 LOCALE_SYSTEM_DEFAULT,&dispid); 47 if(FAILED(hr)) 48 { 49 return false; 50 } 51 52 const int arraySize = paramArray.GetSize(); 53 //Putting parameters 54 DISPPARAMS dispparams; 55 memset(&dispparams, 0, sizeof dispparams); 56 dispparams.cArgs = arraySize; 57 dispparams.rgvarg = new VARIANT[dispparams.cArgs]; 58 dispparams.cNamedArgs = 0; 59 60 for( int i = 0; i < arraySize; i++) 61 { 62 CComBSTR bstr = paramArray.GetAt(arraySize - 1 - i); 63 // back reading 64 bstr.CopyTo(&dispparams.rgvarg[i].bstrVal); 65 dispparams.rgvarg[i].vt = VT_BSTR; 66 } 67 EXCEPINFO excepInfo; 68 memset(&excepInfo, 0, sizeof excepInfo); 69 CComVariant vaResult; 70 UINT nArgErr = (UINT)-1; // initialize to invalid arg 71 //Call JavaScript function 72 hr = spScript->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr); 73 delete [] dispparams.rgvarg; 74 if(FAILED(hr)) 75 { 76 return false; 77 } 78 return vaResult; 79 } 80 81 82 83 //方法2 84 85 /*调用方法,不必多说。 86 87 CString str; 88 str.Format(L"getSum(%d,%d,%d,%d,%d)",m_poiStart.x,m_poiStart.y,m_poiEnd.x,m_poiEnd.y,a+1); 89 ExecScript(str); 90 91 */ 92 HRESULT Cems_mysql_appView::ExecScript(CString strjs) 93 { 94 HRESULT hr; 95 m_spHtmlDoc = (IHTMLDocument2*)(GetHtmlDocument()); 96 if(m_sphtmlWnd == NULL) 97 { 98 hr = m_spHtmlDoc->get_parentWindow(&m_sphtmlWnd);//获取脚本指针 99 } 100 CComBSTR bstrjs = strjs.AllocSysString(); 101 CComBSTR bstrlan = SysAllocString(L"javascript"); 102 VARIANT varRet; 103 hr = m_sphtmlWnd->execScript(bstrjs, bstrlan, &varRet); 104 //m_sphtmlWnd = NULL; 105 return 1; 106 } 107
c/c++/MFC 调用 js 函数代码
精选 转载文章标签 mysql javascript null delete function parameters 文章分类 C/C++ 后端开发
-
C++ MFC
VS2010/MFC编程入门教程之目录和总结(转载) 目前该教程可以到鸡啄
c编程 常用控件 控件 -
C++ 函数调用
函数调用
C++ -
c++调用C语言函数
C++之调用 C语言函数
c++ c语言 开发语言 #include #endif