使用atl创建的html控件,利用它来浏览网页,现在的问题是,网页内容的尺寸事先是不知道的,在IE中如何让WebBrowser控件通知容器窗口自动调整大小以显示出整个网页来,我的控件需要禁用滚动条。

解决方案 »

  1.   

    楼上能清楚点说吗,导出什么接口,按我理解应该是在DocumentComplete时间中获取网页大小来通知容器调整,但是如何获取网页大小尺寸呢?
      

  2.   

    to scq2099yt我就是需要禁用滚动条。
      

  3.   

    禁用滚动条只需要在容器里实现IDocHostUIHandler,在GetHostInfo方法里面设置相应的标志即可。
    问题在于如果网页太大,超出的部分永远也看不到了,甚至超出全屏的范围。另外,通知容器调整大小是没用的,因为窗口本身没有改变大小,必须在外部通过MoveWindow来重设窗口大小,当然前提是要计算出页面的大小。网页大小的计算也并不简单,必须由外部来设置宽度参数,然后才能计算高度参数。
      

  4.   

    楼上是高手,我可能没有说清楚,宽度已经设定好了,就是想计算高度。我就是想弄清楚,比如网页中的<table>标签,不指定高度只指定宽度,里面的文字内容发生变化的话,它总能自动调整高度适应页面,而且还能通知页面所在容器调整窗口大小,现在我就是想知道是如何实现的。
      

  5.   

    如果宽度确定了,执行一次IWebBrowser2::put_width,然后计算IHTMLDocument2::get_documentElement::get_scrollHeight就能得到新的高度
      

  6.   

    页面已经载入了,利用<object width="800">标记生成的控件,载入以后如何获取页面的高度呢,IHTMLDocument2::get_documentElement,IHTMLDocument2没有这个函数呀?
      

  7.   

    IHTMLDocument2::QueryInterface --> IHTMLDocument3
    IHTMLDocument3::get_documentElement --> IHTMLElement
    IHTMLElement::QueryInterface --> IHTMLElement2
    IHTMLElement2::get_scrollHeight
      

  8.   

    我实验了一下,控件初始是多高,get_scrollHeight得到的高度就是多少,没办法得到整个文档占用的高度呀?
      

  9.   

    <object width="800">把width删掉,初始时表定义大小。
      

  10.   

    那就获得控件的container,也就是web browser,然后通过脚本接口找到控件自己,再通过脚本接口去控制自己的大小。只是个想法,不知道能不能管用。
      

  11.   

    要是想用控件填充整个页面,可以设width=100%吧?
      

  12.   

    调整控件尺寸的方法我是知道的,我的问题是,我创建了一个自定义控件,其中使用了WebBrowser控件,我需要将自己的控件插入网页执行,用来浏览网页,但是我的控件大小如果设置的不合适,WebBroswer控件获取到的页面就不能完全显示出来,而切我需要禁用WebBroswer的滚动条。所以我需要知道WebBroswer所载入的网页需要多大尺寸,然后通知我的控件动态调整自己的大小。不知道我说的是否清楚。
      

  13.   

    WebBroswer控件的宽度可以由我的控件来指定,现在需要知道高度如何确定。
      

  14.   

    其实文档的高度有几种选择项,根据实际情况可以选择最大的一个:
    1、body.clientHeight
    2、documentElement.clientHeight
    3、documentElement.scrollHeight
    这3种并没有确定的大小次序,你自己看看哪一个更合适,或者取最大的一个
      

  15.   

    // 获得文档真正的高度,不是可见区域的高度 
        long scroll_height; 
        pElement->get_scrollHeight( &scroll_height ); 我在网上搜索到的帖子,这里说此函数获取到的是文档真正高度,但是我实际使用的时候获取到的只是可见区域的高度,不是整个文档所占的高度百思不得其解
      

  16.   

    // 获得文档真正的高度,不是可见区域的高度 
        long scroll_height; 
        pElement->get_scrollHeight( &scroll_height ); 我在网上搜索到的帖子,这里说此函数获取到的是文档真正高度,但是我实际使用的时候获取到的只是可见区域的高度,不是整个文档所占的高度百思不得其解
      

  17.   

    // 获得文档真正的高度,不是可见区域的高度 
        long scroll_height; 
        pElement->get_scrollHeight( &scroll_height ); 我在网上搜索到的帖子,这里说此函数获取到的是文档真正高度,但是我实际使用的时候获取到的只是可见区域的高度,不是整个文档所占的高度百思不得其解
      

  18.   

    在OnSize函数里面写控件缩放代码。
      

  19.   

    不知道为什么get_scrollHeight突然又好使了,难以理解,感谢各位关注