很早之前看過關於豌豆莢的一片報道,說豌豆莢花了10個月的時間,使用c++重新實現。其界面完全采用html實現。本人之前都是使用mfc開發windows界面,為了達到要求的界面效果,我花了大量的時間在界面重繪和貼圖上,所以一聽說居然還有人這么搞,無比激動。熟悉mfc開發的朋友們都知道,win32 api來實現界面效果,工作量是很大的,往往一個按鈕半透明效果都能把你折騰個半死,而且極容易出錯。但是如果直接在應用程序中,直接嵌入ie控件是有問題的,因為ie版本差異太大,對html5支持很難保證,而使用html開發界面的核心就是htmel5的那些很炫的功能。最好能把瀏覽器控件一起打包發布,這樣可以完全不用系統的ie版本,只要支持一種瀏覽器就行,這樣可以大大節省web開發的精力。
第一次關注libcef是因為,我一個在杭州實習的朋友,回學校一起交流的時候跟我說過,網易雲音樂使用最新的界面架構,使用的chrome那一套。我第一反應就是安裝一個試試看,發現可執行文件目錄下帶有libcef.dll這個文件,遂搜索了一下,發現這正是實現純html界面所需要的東西,而且這貨居然支持離屏渲染(off-screen render),可以把渲染事件回調出來。這東西配合windows下的層疊窗口,就可以實現完全用html+css定義整個界面。試想,平時最蛋疼的窗口圓角,陰影,和透明效果,不用寫一行貼圖代碼就能實現,這簡直是帥到爆有木有!!
下載下來,花了幾天時間探索了一下,參照內置的里面的代碼,跌跌撞撞的,居然實現了。但是還有很多細節自己也很糊塗,而且中途遇到了很多問題,所以寫個一系列隨筆記錄一下。
廢話不多說,本篇介紹將libcef項目的基本配置。
首先進入下載頁面http://www.magpcss.net/cef_downloads/,選擇如下鏈接
下載下來后,使用vs2010打開cefclient2010.sln這個文件。打開后,有兩個項目,cefclient,libcef_dll_wrapper。其中libcef_dll_wrapper是cef的頭文件項目,而cefclient相當於cef庫的使用示范,展示libcef庫所支持的全部功能。想着如果只在原來的項目上修修改改,肯定不能了解將libcef嵌入到程序中的所有細節,所以另開了一個win32項目。步驟如下:
1,在cefclient2010解放方案上右鍵,新建項目,選擇win32項目,輸入項目名稱,點完成。
2,點擊下一步
3,選擇win32 項目,點擊完成
自此,解決方案中總的就有三個項目了。此時解決方案目錄情況如下:
接着,將對參考cefclient項目,對我們自己進行配置,來包含libcef的頭文件,導入庫文件。步驟如下:
1,由於我們在解決方案中創建項目,自動會在sln的文件夾下面,創建以項目名稱命名的項目文件夾,所以include目錄就在父目錄中,設置包含為父目錄,方便引用到cef的頭文件。
2,將Debug和Release的運行庫分別設置為MTD和MT
3,去除預編譯頭
4,將cefclient的附加庫復制到本項目中
5,復制cefclient的附加依賴項,並黏貼到我們自己的項目中
至此,項目配置好了,接下來要拷貝一些依賴的頭文件和庫文件,還有語言包。
1,打開項目文件加下的out目錄
2,把debug的如下文件復制到我們項目的debug輸出目錄,把release的如下文件復制到我們項目的release輸出目錄
3,分別打開debug下和release的lib目錄(下圖為debug下的lib目錄),將libcef_dl_wrapper分別復制到項目的debug和目錄下
好不容易,前期准備工作終於做好了。下一篇將講解如何參照cefclient,構建一個基本的libcef嵌套程序。