運行chrome ui

最近看了一下chrome UI 學習筆記http://blog.chinaunix.net/u2/76055/showart.php?id=2093274),覺得chrome的ui架構不錯,將很多基本控件進行了封裝,這樣寫出來的ui就可以運行在windows,linux,mac機上,但其比qt和wxwidget輕量化,應該可以抽離出來,單獨來作爲一個簡易的圖形庫。另外,chrome對多語言和皮膚等處理都很值得參考。在這裏面學到了一個技巧是,設置完cygwin的環境後就可以在bat裏面運行linux的相關命令了(http://www.oschina.net/code/explore/chromium.r67069/chrome/tools/build/win/version.bat):

:: Put cygwin in the path
call %SolutionDir%/../third_party/cygwin/setup_env.bat
:: Load version digits as environment variables
cat %SolutionDir%/VERSION | sed "s//(.*/)/set /1/" > %VarsBat%

看完了chrome UI 學習筆記,就想自己搭建環境來跑跑相關的例子,但將pdf的例子拷貝下來後,設置好編譯環境,編過去了,卻發現運行不起來。根據中斷點的地方,可以看出是相關環境沒有初始化,但該初始化那些環境呢?網上也有人問,作者的回答是:

1.多個線程的啓動和綁定

2.PathService初始化

3.資源文件初始化

4.國際化判斷和加載

5.如果在Windows 平臺下,需要初始化的一些關於wtl和com的模塊。

但該怎麼樣初始化作者沒講?看來只能自己去找了。參考d:/project/chrome/src/src/chrome/app/chrome_dll_main.cc這個文件,同時參考http://xjchilli.blog.163.com/blog/static/453477392010612111245425/,經過幾次嘗試後總算跑起來了,下面就說一下對應的代碼:

1.多個線程的啓動和綁定  可以不需要

2.PathService初始化

app::RegisterPathProvider();

3 4.資源文件初始化和國際化判斷和加載

bool icu_result = icu_util::Initialize();

std::string app_locale = ResourceBundle::InitSharedInstance("en-US");

5.如果在Windows 平臺下,需要初始化的一些關於wtl和com的模塊。

#define _WTL_USE_CSTRING

#include        // base ATL classes
#include         // base WTL classes
extern CAppModule _Module; // WTL version of CComModule
#include         // ATL GUI classes
#include       // WTL frame window classes
#include        // WTL utility classes like CString
#include       // WTL enhanced msg map macros

OleInitialize(NULL);

運行的結果如圖:

image

爲了方便大家自己搭建,現給出完整的測試代碼:

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章