我的程序是一个基于对话框的程序,目的是显示html文件(每个文件都是有背景图片的),在程序运行过程中所能看到的就是html文件里的内容,并且可能一直再切换,所以我在对话框上加了WebBrowser控件.现在有问题如下:第一种情况:普通显示,我在对话框上放了一个WebBrowser控件,用::Navigate2函数显示要显示的html文件.现在在切换页面的时候会出现比较严重的闪烁感,还可能在切换过程中能看到中间短时间的白屏现场出现,所以显示效果很不满意.第二中情况:因为有第一种的无奈,我就尝试其他办法,最后发现用两个控件能有所改善,实现是两个控件交替显示,在控件的OnDocumentCompleteExplorer函数里实现隐藏另一个控件
m_Web2.ModifyStyle(WS_VISIBLE, 0, 0);
m_Web.ModifyStyle(0, WS_VISIBLE, 0);
这种实现方式可以一定程度上避开第一种情况的现象,切换效果还算可以接受,可是又有新问题了,经常不及时切换,举例:先显示了1.html,没问题,现在显示2.html,发现画面没变化,此时如果切换下窗口,在看我们的程序就发现显示是2了,也就是没有及时刷新.当然这种不刷新不是每次都出现,假如我有1-6 六个html页面,有时还会出现如果6个都已经显示过一遍了,再显示的时候就不会出现不刷新切换的问题(个人感觉比较奇怪).请个位给小弟看看咋回事吧,对这种显示的问题我实在是没有多好的能耐,我都快被这个问题整疯了,因为整个项目可能就会因为这个显示的问题而通不过,如需要我这有测试代码,我可以发给你们,请你们帮我看看.假如嫌分少没关系,我虽分不是太多,还有一点点,只要能解决这个问题,我全拿出来都没关系.

解决方案 »

  1.   

    那你切换之前强制刷新呢(m_Web2.Refresh())
      

  2.   

    能显示就可以了,不能强求完美的,这就是WINDOWS 编程。我至今还没能搞清楚刷新滚动条的那个函数的几个破参数的具体意思,但是照抄例程的写法,自己的程序也能跑,只要跑不死机就可了!
      

  3.   

    我在本论坛回答过这个问题, 对web browser闪烁的原因进行了深入分析, 并且给出了解决方法, 还给出了代码. 你搜索一下吧.
      

  4.   

    楼上的 psbeond(LibUIDK界面库客服) ,麻烦你告诉我具体地址好吗,我没有搜索到,谢谢.
      

  5.   

    You can try LockWindowUpdate/UnlockWindowUpdate function pair. When lock the window update after calling Navigate and unlock it when the DocumentComplete event is fired
      

  6.   

    找到了.这个贴子:
    http://community.csdn.net/Expert/topic/5559/5559377.xml?temp=.5849726
      

  7.   

    jiangsheng(蒋晟.Net[MVP]) 谢谢你的建议,你说的这种方法我很早前就试过了,不能达到好的效果,而且有时还会造成白屏后都不刷新,更是不能接受.
      

  8.   

    psbeond(LibUIDK界面库客服)我给你发了私消息,不知道你有没有看到,方便的话给留个qq或者email,对现在的处理还是有问题需要继续请教."web browser控件在对话框程序中不会闪烁, 而在CWnd中, 当窗口缩放的时候就会闪.一个web browser控件由3层窗口组成:" 这是你在那个帖子里说的,我现在就是一个对话框程序中,也不是在改变窗口大小的时候而产生的闪烁,也就不可能加处理在OnSize函数里去实现,所以现在还是不好怎么处理,还望继续指点.
      

  9.   

    回 psbeond(LibUIDK界面库客服):
    我用了你的方法,还是不行,还是闪得非常严重,如果快速切换则只能看到白屏了.难道是我处理不对?我是在我控件的OnDocumentCompleteExplorer函数里处理的之类化.粘贴了你上面OnSize函数里的代码.还望继续指点,还是那样,方便留个mail或者qq啥的,我白天又上不了网,现在这样请教也不是很方便.我mail:[email protected]
      

  10.   

    可以使用IOleInPlaceObject::SetObjectRects,或者参考HTMLView代码
      

  11.   

    我的mail:iuishop#hotmail.com(#->@),方便的话, 把代码发过来。
      

  12.   

    试一下网上能找到的例子是否也闪烁,这里有一个:
    http://www.codeproject.com/internet/detecting_the_ie_refresh.asp