大家好,我想问一下如何控制CHtmlView不下载图片,以节省网络资源。谢谢

解决方案 »

  1.   

    【ref】重载你的CHtmlView(WebBrowser控件的父窗口)的OnAmbientProperty虚函数   
        
      你可以从你的View的虚函数列表里找到它   
        
      只要在其中控制传进去的第三个参数就可以了,[in],[out]类型的参数.   
        
      BOOL   CHTMLYOURView::OnAmbientProperty(COleControlSite*   pSite,   DISPID   dispid,   VARIANT*   pvar)     
      {   
      //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class   
      if   (dispid   ==   DISPID_AMBIENT_DLCONTROL)   
      {   
        
          pvar->vt   =   VT_I4;   
          pvar->lVal   =   DLCTL_DLIMAGES     |   DLCTL_NO_SCRIPTS   |   DLCTL_NO_JAVA|DLCTL_NO_RUNACTIVEXCTLS   |   DLCTL_NO_DLACTIVEXCTLS;   
          return   TRUE;   
        
      }   
        
      return   CHtmlView::OnAmbientProperty(pSite,   dispid,   pvar);   
      }   
        
      你所需要做的仅仅是改pvar->lVal的值,那是个长整形
      

  2.   

    一下确实,这样就不下载图片了BOOL CTestHtmlView_DonotDownloadImgView::OnAmbientProperty(COleControlSite* pSite, DISPID dispid, VARIANT* pvar)
    {
        // TODO: Add your specialized code here and/or call the base class
        if  (dispid  ==  DISPID_AMBIENT_DLCONTROL)  
        {  
            pvar->vt  =  VT_I4;  
            pvar->lVal  &=  ~DLCTL_DLIMAGES;
           
            return  TRUE;  
        }    return CHtmlView::OnAmbientProperty(pSite, dispid, pvar);
    }
    BTW, 如果是BHO这则种方法不行.
    -----------------------------------------
    http://topic.csdn.net/t/20050523/00/4027309.html (jiangsheng)
    BHO是插件而不是容器——但是容器的实现微软自己做了。你可以考虑的是修改注册表、在底层TCP/IP通讯中添加自己的过滤器,或者使用APP对HTML数据流进行过滤,但是这些修改都是全局性的。   
    http://home.nyc.rr.com/itandetnik/PassthruAPP.zip 
    -----------------------------------------