Jackiesteed

www.github.com/jackiesteed

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DuiLib窗口是自己处理绘制窗口的事件的, 而CEF也是这样, 所以, 这两套绘制机制放在一起是会冲突的.

也就是说, 如果你用DuiLib窗口的一部分当做CEF的绘制区域, 就会出现CEF窗口不断闪动的问题, 因为DuiLib的绘制事件导致CEF的重绘, 而两套机制不是很兼容.

道理只能讲到这种程度了, 随着理解的深入, 我会给出更详细的介绍.

至于解决办法, 就是把两者的绘制隔离起来.

我为CEF单独创建了一个子窗口, 在子窗口中进行CEF内容的绘制.

但是有个问题是, 父窗口的重绘, 一般也会导致子窗口的重绘, 还是会出现CEF窗口闪烁的问题, 直到..

我发现WS_CLIPCHILDREN这个窗口属性, 也就是说, 在父窗口重绘是会剔除子窗口占据的区域.

这样, 给DuiLib窗口设置了这个属性, 然后创建一个子窗口, 在子窗口里面创建CEF窗口就ok了.

关键就是, 把两套绘制引擎的绘制流程隔离.

 

posted on 2013-09-27 16:42  Jackiesteed  阅读(4030)  评论(5编辑  收藏  举报