小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

cef 介紹

 quasiceo 2015-05-27

cef 介紹

介紹

cef 是一個基于google chromiun的簡單的框架。 它主要是作為一個內(nèi)嵌瀏覽器嵌入到客戶端應(yīng)用程序中。

可以再 http:// 下載最新的編譯版本。

總體框架預(yù)覽

  1. CEF 使用了多進(jìn)程。主進(jìn)程是“browser”進(jìn)程。 而子進(jìn)程是由rederes, plugins, GPU, 等組件創(chuàng)建。
  2. 在ECF的所有進(jìn)程中,都可以有多線程。CEF提供了函數(shù)和接口在不同的線程中來傳遞任務(wù)。
  3. 一些回調(diào)方法和函數(shù)只能在特定線程和進(jìn)程中使用。在使用API之前請確保仔細(xì)閱讀注釋。

源代碼

cefsimple 工程初始化CEF并創(chuàng)建了一個簡單的瀏覽器窗口。

  1. 系統(tǒng)在入口點函數(shù)中(man或者wWinMain)函數(shù)中開啟browser進(jìn)程
  2. 入口點函數(shù):

    1. 創(chuàng)建SimpleApp的實例,在這個類中保存process-level callbacks.
    2. 初始化CEF并開啟消息循環(huán)。
  3. 當(dāng)CEF初始化完畢以后, SimpleApp::OnContextInitialized()會被調(diào)用。在這個方法中:

    1. 創(chuàng)建一個單例的SimpleHandler
    2. 由CefBrowserHost::CreateBrowserSync()創(chuàng)建一個瀏覽器窗口
  4. 所有的瀏覽器共享同一個在SimpleHandler。SimpleHandler負(fù)責(zé)定制瀏覽器的行為并保存browser-related callbacks(loading狀態(tài),標(biāo)題行為等)
  5. 當(dāng)瀏覽器窗口被關(guān)閉的時候, SimpleHandler::OnBeforeClose() 被調(diào)用。當(dāng)所有瀏覽器窗口被關(guān)閉,CEF消息循環(huán)退出。

可以看下如下代碼:

int APIENTRY wWinMain(HINSTANCE hInstance
				  , HINSTANCE hPrevInstance
				  , LPTSTR lpCmdLine
				  , int nCmdShow)
{
	CefMainArgs args(hInstance);

	CefRefPtr<MySimpleApp> app(new MySimpleApp);

	int exitCode = CefExecuteProcess(args, app, NULL);
	if(exitCode >= 0) return exitCode;
	CefSettings settings;
	CefInitialize(args, settings, app, NULL);

	CefRunMessageLoop();
	CefShutdown();
	return 0;
}

此時進(jìn)程開啟,但是沒有任何窗口, 如果我們需要建立窗口需要如下

CefWindowInfo winInfo;
winInfo.SetAsPopup(NULL, "myCefSimple");

CefBrowserSettings browser_settings;

CefRefPtr<CefClient> client(new MySimpleClient());
std::string url = "file:///D:/project/github/cptf/resource/binding.html";

CefBrowserHost::CreateBrowser(winInfo
	, client.get()
	, url
	, browser_settings
	, NULL);

這樣就顯示出來窗口了。
但是我們發(fā)現(xiàn)在關(guān)閉的時候進(jìn)程沒有關(guān)掉, 所以我們要做如下動作。

class MySimpleClient : public CefClient
				, public CefLifeSpanHandler


void MySimpleClient::OnBeforeClose(CefRefPtr<CefBrowser> browser) {
	CEF_REQUIRE_UI_THREAD();

	CefQuitMessageLoop();
}

總結(jié)

App和Client是CEF中最重要的兩個類。CefExecuteProcess 和 CefInitialize 是建立app的兩個最重要方法。
而CreateBrowser 是創(chuàng)建瀏覽器窗口的最重要方法。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多