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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM