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

 

转载于:https://www.cnblogs.com/chechen/p/10012452.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值