將webkit核心封裝為duilib的瀏覽器控制項

2022-05-02 15:54:12 字數 1637 閱讀 1091

先簡單介紹一下這個webkit核心

webkit 是乙個開源的

瀏覽器引擎,與之相對應的引擎有

gecko

(mozilla

firefox 等使用)和

trident

(也稱mshtml,ie

使用)。同時webkit

也是蘋果mac os x 系統引擎框架版本的名稱,主要用於

safari

,dashboard

,mail

和其他一些

mac os x

程式。webkit 前身是 kde 小組的 khtml,webkit 所包含的 webcore 

排版引擎

和 jscore 引擎來自於 

kde的 

khtml

和 kjs,當年蘋果比較了 gecko 和 khtml 後,仍然選擇了後者,就因為它擁有清晰的

原始碼結構、極快的

渲染速度。

將 khtml 發揚光大,推出了裝備 khtml 改進型 webkit 引擎的

瀏覽器safari。

webkit 核心在手機上的應用也十分廣泛,例如 google 的手機

android

、webkit是開源的web瀏覽器引擎,蘋果的safari、谷歌的chrome瀏覽器都是基於這個框架來開發的。webkit 還支援移動裝置和手機,包括iphone和android手機都是使用webkit做為瀏覽器的核心。

blzfans發布的開源免費核心,乙個相當好的**,在此先感謝blzfans的工作!

這個wke核心是為了在3d遊戲中嵌入網頁和flash而開發的,支援最新的html5和css3技術,相容性和速度都不錯。

今天花了一上午把這個核心封裝為了duilib的瀏覽器控制項,效果如下。 

封裝起來還是挺順利的,有自帶的win32demo,了解了他的工作過程,使用這個核心很簡單,乙個標頭檔案,乙個庫檔案,乙個dll,只有這個3個檔案。我在duilib裡,仿照了cricheditui的封裝過程。製作了cwkewebkitui控制項作為瀏覽器控制項。這個cwkewebkitu控制項繼承了ccontrolui控制項,來更好的相容duilib,然後在控制項內部我封裝了cwkewebkitwnd類,cwkewebkitu控制項初始化時會建立cwkewebkitwnd類,這個cwkewebkitwnd類會使用createwindow函式先建立乙個子窗體,並且使用了ws_visible

| ws_child | ws_clipsiblings | ws_clipchildren樣式,ws_child讓這個新建的窗體成為主窗體的子窗體,然後新增ws_clipsiblings | ws_clipchildren樣式,這兩個樣式很關鍵,他可以讓主窗體重新整理時不去重新整理子窗體,否則不加這個樣式,就會因為主窗體頻繁的重新整理導致瀏覽器控制項的卡頓。解決了核心問題,然後就是處理webkit核心的訊息,仿照了原代的demo,我把各個訊息處理後,就封裝好了這個控制項,並且增加了幾個簡單的介面來方便外部的呼叫。

結束,休息一下~~

2014.7.25  15:50  redrain

將Nginx封裝為Windows服務並自啟動

建立nginx service.exe.config 為支援net 4.0 runtime,預設只支援net 2.0 runtime 檔案結構如下 nginx service.xml 內容如下 nginx nginx service high performance nginx service d ...

將VBA操作封裝為DLL元件並在EXCEL中呼叫

使用程式 1 microsoft office excel 2003 2 microsoft visual basic 6.0 案例 在工作表的c1單元格得出a1單元格 b1單元格的值。設計的vba sub test on error resume next range c1 cells 1,1 c...

將伺服器響應封裝為乙個泛型類

返回前端資料封裝 當序列化json物件時,如果是null的物件,key也會消失 jsonserialize include jsonserialize.inclusion.non null public class serverresponseimplements serializable priv...