来者有分:谈谈CHtmlView编程 CFormView + CWebBrowser2 = CHtmlViewCHtmlView::OnDraw()一画就画到CFormView上去了,可formview被WebBrowser2遮盖住了....所以没用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 faint,111222( ),你也太狠了吧。 用CHtmlView::Navigate2void Navigate2( LPITEMIDLIST pIDL, DWORD dwFlags = 0, LPCTSTR lpszTargetFrameName = NULL );void Navigate2( LPCTSTR lpszURL, DWORD dwFlags = 0, LPCTSTR lpszTargetFrameName = NULL, LPCTSTR lpszHeaders = NULL, LPVOID lpvPostData = NULL, DWORD dwPostDataLen = 0 );void Navigate2( LPCTSTR lpszURL, DWORD dwFlags, CByteArray& baPostedData, LPCTSTR lpszTargetFrameName = NULL, LPCTSTR lpszHeader = NULL );你提供了资源的URL,使用它就可以显示网页。 忽忽,我不是指这资源。我说的资源是指程序的资源,如菜单、图片等等的资源啊。我把一张网页导入了资源,怎么把它显示呢?我是说这个啊,用了LoadFromResource()之后我就不知道怎么办了。 我建议你把网页另存一个文件,然后用Navigate显示. 感谢您使用微软产品。在你调用过LoadFromResource后, 这个HTML资源应该已经被在WebBrowser control中显示了.请参见下面的例子, 在这个例子中我用了MFCIE SAMPLE 在http://msdn.microsoft.com/code/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/026/001/497/msdncompositedoc.xml我添加了一个HTML资源如下:<HTML> <HEAD> </HEAD> <BODY LINK="#0000ff" VLINK="#800080"> <P> Sample </P> <P> <IMG SRC="res://mfcie.exe/cloud.gif" ALT="res://cloud.gif"> </P> </BODY> </HTML>打开.rc file as Text, 修改和添加如下:HTML1.HTM HTML DISCARDABLE "res\\html1.htm" cloud.GIF HTML DISCARDABLE "res\\cloud.gif" 在OnInitialUpdate function部分你可以用:Navigate(_T("res://mfcie.exe/html1.htm"));或者LoadFromResource("html1.htm");微软亚洲技术中心 VC技术支持 你使用一下Spy++就知道。Chtmlview一连好几个窗口(一层层的父子关系)。ChtmlView只是最上面的一个,真正显示的在里面的窗口里呢。 感谢acptvc(微软全球技术中心 VC技术支持)的指点Happy_Wawe(十一少):我已经用spy++查过了,确实是有好几个窗口(我的是3个),那么怎么找到真正显示的窗口呢? 这个最好通过GetDocument来访问。 acptvc(微软全球技术中心 VC技术支持)帮我解决一下,为什么在子线程中不能用Serilize 错了,是CHtmlView::GetHtmlDocumentLPDISPATCH GetHtmlDocument( ) const; jiangsheng(蒋晟):然后呢?好象得到的是一个com接口呀,我该怎么使用它呢? 真是受不了了,给个例子你好了可以显示任何资源中的html ,在对话框中就是有个问题,谁有Html回调的lib 你要自己通过这个接口访问元素。 CComDispatchDriver pHTMLDispatch(m_wndBrowser.GetDocument()); if(pHTMLDispatch.p){ HRESULT hr; CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> pHTMLDocument(pHTMLDispatch); if(pHTMLDocument.p){ CComPtr<IHTMLElementCollection> pHTMLElementCollection; hr=pHTMLDocument->get_all(&pHTMLElementCollection); if(hr==S_OK && pHTMLElementCollection.p!=NULL){ LONG celem; hr=pHTMLElementCollection->get_length(&celem); if(hr==S_OK){ for(int i=0;i<celem;i++){ COleVariant varIndex,var2;//var2 is not used because accessing index,not name varIndex.vt=VT_UINT; varIndex.lVal=i; CComDispatchDriver pDisp; hr=pHTMLElementCollection->item(varIndex,var2,&pDisp); if(hr==S_OK){ CComQIPtr<IHTMLElement, &IID_IHTMLElement> pHTMLElement(pDisp); if(pHTMLElement){ //find html element BSTR bstrTagID; if(pHTMLElement->get_id(&bstrTagID)==S_OK){ if(bstrTagID!=NULL){ _bstr_t bstrHTML(lpszHtml); _bstr_t bstrTagIDToCompare(lpszTagID); _bstr_t _bstrTagID(bstrTagID,FALSE); if(_bstrTagID==bstrTagIDToCompare){ if(bIsInnerHtml) pHTMLElement->put_innerHTML(bstrHTML); else pHTMLElement->put_outerHTML(bstrHTML); #ifdef _DEBUG BSTR bstrTag; hr=pHTMLElement->get_outerHTML(&bstrTag); CString strTag=bstrTag; ::afxDump<<strTag; #endif } } } } } } } } } } 求大牛指导,如何获取指定线程的调用堆栈? MFC DLL中的CWinApp在LoadLibrary时不调用InitInstance 求助:如何在子窗口中输入信息父窗口客户区显示信息 数据的添加 数据删除时 如何确认上位机中的数据与下位机中的数据一致 关于在程序中使用new的问题 数据类型转换问题 谁有html guard2.3的注册码,100分相送,不够再给!! 关于异步socket的回调 这样的错误怎么调试? 哪位系统分析员分析一下:上月同期是什么概念?上年同期又是什么概念?每个月可能有31天,28天。。。 什么叫做可重入? CButton的问题!请帮忙!谢谢
http://msdn.microsoft.com/code/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/026/001/497/msdncompositedoc.xml我添加了一个HTML资源如下:<HTML>
<HEAD>
</HEAD>
<BODY LINK="#0000ff" VLINK="#800080">
<P> Sample </P>
<P>
<IMG SRC="res://mfcie.exe/cloud.gif" ALT="res://cloud.gif">
</P>
</BODY>
</HTML>打开.rc file as Text, 修改和添加如下:HTML1.HTM HTML DISCARDABLE "res\\html1.htm"
cloud.GIF HTML DISCARDABLE "res\\cloud.gif" 在OnInitialUpdate function部分你可以用:Navigate(_T("res://mfcie.exe/html1.htm"));或者LoadFromResource("html1.htm");微软亚洲技术中心 VC技术支持
ChtmlView只是最上面的一个,真正显示的在里面的窗口里呢。
帮我解决一下,为什么在子线程中不能用Serilize
CHtmlView::GetHtmlDocument
LPDISPATCH GetHtmlDocument( ) const;
然后呢?好象得到的是一个com接口呀,我该怎么使用它呢?
可以显示任何资源中的html ,在对话框中
就是有个问题,谁有Html回调的lib
CComDispatchDriver pHTMLDispatch(m_wndBrowser.GetDocument());
if(pHTMLDispatch.p){
HRESULT hr;
CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> pHTMLDocument(pHTMLDispatch);
if(pHTMLDocument.p){
CComPtr<IHTMLElementCollection> pHTMLElementCollection;
hr=pHTMLDocument->get_all(&pHTMLElementCollection);
if(hr==S_OK && pHTMLElementCollection.p!=NULL){
LONG celem;
hr=pHTMLElementCollection->get_length(&celem);
if(hr==S_OK){
for(int i=0;i<celem;i++){
COleVariant varIndex,var2;//var2 is not used because accessing index,not name
varIndex.vt=VT_UINT;
varIndex.lVal=i;
CComDispatchDriver pDisp;
hr=pHTMLElementCollection->item(varIndex,var2,&pDisp);
if(hr==S_OK){
CComQIPtr<IHTMLElement, &IID_IHTMLElement> pHTMLElement(pDisp);
if(pHTMLElement){
//find html element
BSTR bstrTagID;
if(pHTMLElement->get_id(&bstrTagID)==S_OK){
if(bstrTagID!=NULL){
_bstr_t bstrHTML(lpszHtml);
_bstr_t bstrTagIDToCompare(lpszTagID);
_bstr_t _bstrTagID(bstrTagID,FALSE);
if(_bstrTagID==bstrTagIDToCompare){
if(bIsInnerHtml)
pHTMLElement->put_innerHTML(bstrHTML);
else
pHTMLElement->put_outerHTML(bstrHTML);
#ifdef _DEBUG
BSTR bstrTag;
hr=pHTMLElement->get_outerHTML(&bstrTag);
CString strTag=bstrTag;
::afxDump<<strTag;
#endif
}
}
}
}
}
}
}
}
}
}