浏览器是真实的子窗口,绝非双窗口实现。浏览器运行正常,FLASH显示正常
CPU占用很低,GOOGLE页面在鼠标乱晃时的CPU不超过10%,百度页面占用20-30%,因为脚本中频繁使用定时器没打算藏着掖着,但啥时候公开原理要看我心情,还有跟帖数……嘿嘿

解决方案 »

  1.   

    你点击浏览器页面里面的链接之后再看CPU不高??如果CPU还是正常的那恭喜你成功了!
      

  2.   

    点击链接时的瞬间CPU占用率是25%左右,打开页面后回到2-6%,页面加载大约2秒内完成。比 IE 高一点点。
      

  3.   


    不阻塞UI,你说的这个问题在我这里不存在。IE控件打开网页都是异步的,为什么会阻塞?
      

  4.   

    不是多层窗体吗?
    后面的半透明,是根据Alpha透明?是没有WM_PAINT的实现方式吗
      

  5.   


    浏览器控件是透明窗口真正的子窗口,并没有创建另一个不透明的顶级窗口作为浏览器的父窗口(双窗口模拟法)。
    WM_PAINT方式在透明窗口下行不通。
      

  6.   


    有的人拼命想把浏览器控件透明化,有的人拼命想把浏览器控件不透明化,呵呵,众口难调啊。这是两个完全不同的概念。
    想把浏览器透明化的人,是希望背景是缕空的,但网页元素是不透明的。这个基本上做不到,有的人想办法把窗口背景截下来作为body元素的背景图片,看起来是做到了,但窗口一移动或者背景发生了变化就露馅了,没法实时更新背景。
    想把浏览器不透明化的人,是希望主窗口被创建成LAYERED半透明样式而作为子窗口的浏览器控件正常显示。因为LAYERED窗口的子窗口是显示不出来的,所以都想尽各种办法截获子窗口的内容。其它标准窗口还好说,偏偏这个浏览器窗口很难缠,它从来不发送任何WM_PAINT消息,也不处理任何绘制相关的消息,截图是很难办的,标准截图方式对它无效。最重要的是不知道它的显示内容什么时候会发生变化。所以产生了双窗口解决方案。
      

  7.   

    没研究过这个 , 是MFC应用程序 + IE 控件吧, 然后写了一个 透明的CWnd类 , 子子窗体继承 …… 估计没这么简单 , 也只能想到这了 , 楼主给答案啊。
      

  8.   

    实现的可能性是确实的,可以参考Win7里面的小挂件,至于怎么做没有研究过,不过chrome集成webkit的倒是略知一二,ie的没在这个层面研究。
      

  9.   

    既然是单窗口,那应该是UpdateLayeredWindow,那现在的问题就是获取浏览器内容了,如果WM_PRINTCLIENT不行,那就是用IE的COM接口获取了,比如IViewObject::Draw。
    搂主讲到了性能,那应该是用自己Render的方式了。
      

  10.   

    想把浏览器透明化的人,是希望背景是缕空的,但网页元素是不透明的。这个基本上做不到
    ==========================
    这个是能做到di
    IE控件加载一个gif,然后把背景镂空,就可以实现一个桌面精灵,类似瑞星的小狮子
      

  11.   

    结了。实现源码已经在redui源码里了,可在Q群(40729296)里下载。