因为html代码中存在各种副号,不能直接将代码转换成字符串用形参传入。需要设置一个隐藏的控件,将需要传入的html代码设到控件中,再在js中读取代码。

 

 
CItemDescEditDlg::OnSetDesc(WPARAM wParam,LPARAM lParam)
{
l_desc * lpdesc = (l_desc *)lParam;  //  需要设到js中的html代码的struct

 
CComPtr<IHTMLDocument2> pHtml = this->m_Browser.GetDocument(); 
if (pHtml)
{
CComPtr<IHTMLElementCollection> spAll;
pHtml->get_all(&spAll);
if (spAll)
{
CComPtr<IDispatch> lpDisp;

 
CComPtr<IHTMLElement> item;

 
spAll->item(CComVariant("Hidden_desc"), CComVariant((long)0), &lpDisp);
CComQIPtr <IHTMLElement> spElement = lpDisp; 
if (spElement)
{
// 这里将代码设到隐藏的控件中去。
if (FAILED(spElement->put_innerText(CComBSTR(lpdesc->bsValue)))) 
{
XTRACEERROR(_T("Set Desc Info Error!"));
}
CComBSTR bsStr = _T("SetDestInfo()");
// 调用往js中设代码的JS函数
g_InvokeJS(this->m_Browser.GetDocument(),bsStr);
}
}

 
delete lpdesc;
return 0;
}

 

 

 
、、、、、、、、、、、、、、、、、、、、、、、
js设置:
隐藏控件:
<textarea name="Hidden_desc" id="Hidden_desc" style="height:0px; display:none">

 
</textarea>

 
//js函数
<script language="javascript"> 
function SetDestInfo()
{
ax.clear()
ax.insert( document.getElementByIdx_x_x_x("Hidden_desc").value)
};  
</script>