赞助

Duilib嵌入CEF出现窗口显示不正常

参考资料:https://www.aliyun.com/zixun/wenji/1247250.html

转载:https://www.cnblogs.com/gongxijun/p/4857977.html

转载:https://www.cnblogs.com/jackiesteed/articles/3343012.html

转载:https://www.zhaokeli.com/article/8385.html

一、在实际CEF项目开发中,点击运行客户端时,会出现CEF窗口网页加载显示不全

 DuiLib窗口是自己处理绘制窗口的事件的, 而CEF也是这样, 所以, 这两套绘制机制放在一起是会冲突的.也就是说, 如果你用DuiLib窗口的一部分当做CEF的绘制区域, 就会出现CEF窗口不断闪动的问题, 因为DuiLib的绘制事件导致CEF的重绘, 而两套机制不是很兼容。

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

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

二、Cef+MFC页面覆盖(页面不刷新现象),而不能显示的问题,摸索了好久,发现原来是cef和MFC中对话框中的刷新前后不一样造成的。

所以去研究了对话框的重绘之后,发现其实只需要,虚函数OnEraseBkgnd重写,改成这样之后,便不会出现页面覆盖。

.h

virtual BOOL OnEraseBkgnd(CDC* pDC);

.cpp部分

在映射部分手动加载:

ON_WM_ERASEBKGND()
BOOL MMenu::OnEraseBkgnd(CDC* pDC){
    //return TRUE;
    return FALSE;
}

 

手动刷新窗口

RECT rect;
GetWindowRect(hWnd, &rect);
InvalidateRect(hWnd, &rect, TRUE);//刷新窗口

点击下载Demo

 

posted @ 2018-11-24 16:12  车臣  阅读(2094)  评论(0编辑  收藏  举报