标题:WebBrowser控件,c++修改HTML中元素内容的一种方式
Author: Kagula
Last Update Date: 2014-12-05
关键词:CComPtr IHTMLDocument3
Envrionment: Win7 64bits VS2010SP1
Step1:
//如果使用了m_pWebAccount->ShowWindow(SW_HIDE)会导致属主窗口释放。
m_pWebAccount->BringWindowToTop();
CComPtr<IHTMLDocument3> pDoc = GetHTMLDoc(m_pWebAccount);
CString cstrPrice;
cstrPrice.Format(L"%.2f",m_dAccountPayment);
//TAG_PRICE存放的是元素id属性的值,需要根据这个值查找哪个元素中的内容需要修改!
SetHTMLElemValue(pDoc, TAG_PRICE, cstrPrice);
Step2:
CComPtr<IHTMLDocument3> CcatWelcomeDlg::GetHTMLDoc( CExplorer1 *pWeb ) { CComPtr<IHTMLDocument3> pHtmlDoc=NULL; CComPtr<IDispatch> spDocDisp; HRESULT hr; spDocDisp = pWeb->get_Document(); if(spDocDisp) { hr = spDocDisp->QueryInterface(IID_IHTMLDocument3, (void**)&pHtmlDoc); if (SUCCEEDED(hr) && pHtmlDoc) { return pHtmlDoc; } } return NULL; }//end func
void CcatWelcomeDlg::SetHTMLElemValue(CComPtr<IHTMLDocument3> htmlDoc,CString elementID,CString value) { CComPtr<IHTMLElement> element; HRESULT hr = htmlDoc->getElementById(_bstr_t(elementID.GetBuffer()), &element); if(SUCCEEDED(hr) && element != NULL) { element->put_innerText(value.GetBuffer()); } }
Step3:
添加所需的头文件,可以参考本Blog其它关于WebBrowser控件的文章。