黄历 立券:CDHtmlDialog实现调用html中js函数-江湖宵小-搜狐空间
来源:百度文库 编辑:九乡新闻网 时间:2024/05/01 09:48:33
CDHtmlDialog实现调用html中js函数
分类:编程进行时2008-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
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;
}
dispparams.cNamedArgs = 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
{
if( m_spHtmlDoc==NULL )
return FALSE;
HRESULT hr = m_spHtmlDoc->get_Script(&spDisp);
ATLASSERT(SUCCEEDED(hr));
return SUCCEEDED(hr);
}
4.调用实例:
CallJScript("alert","test");
CDHtmlDialog实现调用html中js函数-江湖宵小-搜狐空间
一段实现UBB转HTML的JS
CSS JS实现的选项卡效果(html组件)-网页陶吧-CSS-天极Yesky
函数调用堆栈
函数调用约定关键字
C++中虚函数实现原理揭秘
后台调用JS 触发指定按钮
函数调用约定和堆栈
如何在类中实现回调成员函数
C/C++函数调用约定与函数名称修饰规则
英特纳雄耐尔尚未实现,Internet已经实现-风雨读书楼 章立凡-搜狐空间
js中top、parent、frame
如何在html或javascript调用DLL文件中的方法
HTML在线编辑器的调用方法和使用方法详解
python中调用c++(Boost
在VC中调用 WebService
js 匿名函数 闭包 - phperwuhan的日志 - 网易博客
《老北京的节日和习俗(十二)•“走亲戚”》-纪连海 历史的江湖-搜狐空间
陆铭:写给不想做学术的学生们-陈宇峰:江湖的相忘-搜狐空间
代码真相函数调用 堆栈 转载 - liangxiufei - 博客园
【嵌入式学习】Arm-elf-gcc编译器函数调用规则
error C2668: “pow”: 对重载函数的调用不明确
Linux内核模块导出后无法调用问题解决(模块间函数调用通讯)
JS实现对table增加删除行并自动排序