1. 程式人生 > >在DuiLib開發的客戶端裡面使用CEF

在DuiLib開發的客戶端裡面使用CEF

DuiLib視窗是自己處理繪製視窗的事件的, 而CEF也是這樣, 所以, 這兩套繪製機制放在一起是會衝突的.

也就是說, 如果你用DuiLib視窗的一部分當做CEF的繪製區域, 就會出現CEF視窗不斷閃動的問題, 因為DuiLib的繪製事件導致CEF的重繪, 而兩套機制不是很相容.

道理只能講到這種程度了, 隨著理解的深入, 我會給出更詳細的介紹.

至於解決辦法, 就是把兩者的繪製隔離起來.

我為CEF單獨建立了一個子視窗, 在子視窗中進行CEF內容的繪製.

但是有個問題是, 父視窗的重繪, 一般也會導致子視窗的重繪, 還是會出現CEF視窗閃爍的問題, 直到..

我發現WS_CLIPCHILDREN

這個視窗屬性, 也就是說, 在父視窗重繪是會剔除子窗口占據的區域.

這樣, 給DuiLib視窗設定了這個屬性, 然後建立一個子視窗, 在子窗口裡面建立CEF視窗就ok了.

關鍵就是, 把兩套繪製引擎的繪製流程隔離.