c++调用javascript代码函数

1、c++调用javascript代码函数:

(1)下面的函数可以有返回值

bool CallJScript(IHTMLDocument2* pDoc2,const CString strFunc, DISPPARAMS& dispparams, CComVariant& vaResult)
{
IDispatch *spScript = NULL; 
HRESULT hr;
bool bResult = true;
hr = pDoc2->get_Script(&spScript);
if(FAILED(hr))
{
return false;
}

CComBSTR bstrMember(strFunc);
DISPID dispid = NULL;
hr = spScript->GetIDsOfNames(IID_NULL,&bstrMember,1,
LOCALE_SYSTEM_DEFAULT,&dispid);
if(FAILED(hr))
{
spScript->Release();
return false;
}
EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);
//
UINT nArgErr = (UINT)-1; // initialize to invalid arg

hr = spScript->Invoke(dispid,IID_NULL,0,
DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);
spScript->Release();

if(FAILED(hr)){

return false;
}
return true;

}

(2)如果不需要返回值,可直接用IHTMLWindow2的execScript(),使用方法类似于javascript的eval函数

IHTMLWindow2* pIHTMLWindow = NULL;
pIHTMLDoc->get_parentWindow(&pIHTMLWindow);
if(pIHTMLWindow)
{
VARIANT pvarRet; //虽然有输出参数,但总是为空(参见MSDN)
CString strResult;
strResult = L"getWidth()"; //javascript如何调用,这个字符串就如何写
HRESULT hr = pIHTMLWindow->execScript(CComBSTR(strResult), CComBSTR("JScript"), &pvarRet);

pIHTMLWindow->Release();
pIHTMLWindow = NULL;
}

2、改变CDHtmlDialog对象的显示风格使用SetHostFlags,如设置DOCHOSTUIFLAG_SCROLL_NO可以将滚动条去掉,DOCHOSTUIFLAG_THEME使显示XP风格等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值