关于WebBrowser使用问题

来源:互联网 发布:移动宽带提速软件 编辑:程序博客网 时间:2024/05/29 15:12

        由于工作需要,最近一直在看IE编程方面的知识,也查了很多微软官网的资料,非常感谢微软的技术人员的帮助文档;

如果想用好这个组件的话需要对COM组件基础知识有了解,因为IE本分就是COM技术的典型应用。


class CClientBrowser :  public IOleContainer,
                           public IOleClientSite,
                           public IOleInPlaceSite,
                                          public IOleControlSite,
                                          public IDocHostUIHandler,
                                          public DWebBrowserEvents2;


上面是我用到的类,由于是C++导出接口而且都是纯虚函数所以必须把上面这些类的成员都需要实现;


    IWebBrowser2*       __web_browser;
    IOleObject*              __ole_object;
    IConnectionPoint*   __conn_point;

 

   我用到的类成员,IWebBrowser2->Navigate2来打开网页的;


  在开发过程中需求随时都在改变,一会需求不能有3D边框,一会不能有下拉条,要想知道网页下载完成的回调了,等等...


  1: 首先去掉3D边框网页程序员绝对可以实现的,但是给我了句我真心改不了,所以我只能硬着头皮又在MSDN查资源来解决3D边框和下拉条的问题,

  就是为了实现GetHostInfo这个函数,搞的我又写了很多代码;

    if ( __ui_info )
    {
        __ui_info->cbSize           = sizeof( DOCHOSTUIINFO );
        __ui_info->dwFlags          = DOCHOSTUIFLAG_NO3DBORDER|DOCHOSTUIFLAG_SCROLL_NO;
        __ui_info->dwDoubleClick    = DOCHOSTUIDBLCLK_DEFAULT;
    }

   这样3D边框和下拉条就自然消失了;

   

   2 :去掉右键菜单那就更容易了,ShowContextMenu 当你在浏览器右键的时候就会调用者个回调函数,所以你可以在这里面处理右键菜单‘

     STDMETHODIMP CClientBrowser::ShowContextMenu( DWORD __dwid , POINT* __point , IUnknown* __unknown , IDispatch* __dispatch )
         {
               return ( S_OK );
        }

       返回S_OK右键菜单就可以消失,对于C++程序员来说这太幸福了;


     好了,这是我第一次在CSDN写博客,希望对大家有帮助;需要代码的同学加我Q121593025,共同进步,才是硬道理;

   

0 0