CFormView + CWebBrowser2 = CHtmlViewCHtmlView::OnDraw()一画就画到CFormView上去了,可formview被WebBrowser2遮盖住了....所以没用

解决方案 »

  1.   

    faint,111222( ),你也太狠了吧。
      

  2.   

    用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,使用它就可以显示网页。
      

  3.   

    忽忽,我不是指这资源。我说的资源是指程序的资源,如菜单、图片等等的资源啊。我把一张网页导入了资源,怎么把它显示呢?我是说这个啊,用了LoadFromResource()之后我就不知道怎么办了。
      

  4.   

    我建议你把网页另存一个文件,然后用Navigate显示.
      

  5.   

    感谢您使用微软产品。在你调用过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技术支持
      

  6.   

    你使用一下Spy++就知道。Chtmlview一连好几个窗口(一层层的父子关系)。
    ChtmlView只是最上面的一个,真正显示的在里面的窗口里呢。
      

  7.   

    感谢acptvc(微软全球技术中心 VC技术支持)的指点Happy_Wawe(十一少):我已经用spy++查过了,确实是有好几个窗口(我的是3个),那么怎么找到真正显示的窗口呢?
      

  8.   

    这个最好通过GetDocument来访问。
      

  9.   

    acptvc(微软全球技术中心 VC技术支持)
    帮我解决一下,为什么在子线程中不能用Serilize
      

  10.   

    错了,是
    CHtmlView::GetHtmlDocument
    LPDISPATCH GetHtmlDocument( ) const;
      

  11.   

    jiangsheng(蒋晟):
    然后呢?好象得到的是一个com接口呀,我该怎么使用它呢?
      

  12.   

    真是受不了了,给个例子你好了
    可以显示任何资源中的html ,在对话框中
    就是有个问题,谁有Html回调的lib
      

  13.   

    你要自己通过这个接口访问元素。
        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
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }