Duilib嵌入Cef流程

        CEF全称Chromium Embedded Framework,是一个基于Google Chromium的开源项目。Google Chromium项目主要是为Google Chrome应用开发的,而CEF的目标则是为第三方应用提供可用的嵌入浏览器支持。CEF3不仅开源,而且跨平台,框架的开发者也在不断的更新,英文资料也较丰富,对Html5,Css3等支持也很好。目前CEF3被全球很多的公司使用,国内使用该框框架的公司也不少,比如腾讯、网易、印象笔记等。可以算的上应用最广泛的基于Google Chromium的开源项目之一。CEF3除了用作可嵌入浏览器应用,还可以用作web开发界面交互,甚至简单的浏览器。

话不多少,现在基于duilib做个客户端的浏览器,写下该文,当做笔记

1、首先需要添加继承自CefApp的类CDuiCefApp;

该类主要是进行cef相关环境的的初始化

Duilib嵌入Cef流程_第1张图片

2、添加一个cef消息交互类CDuiMsgHandler

Duilib嵌入Cef流程_第2张图片

3、两个调用cef的关键类已经好了,接下来就是cef的初始化了,我们放在winMain函数这里

Duilib嵌入Cef流程_第3张图片

CefSettings对象我们这里设置multi_threaded_message_loop=true,目的是使cef的ui线程和我们程序的线程分开,这样我们就可以使用Duilib的消息循环CPaintManagerUI::MessageLoop()而不必调用cef的CefRunMessageLoop()了;

4、接下来就是嵌入到窗口了,我们在InitWindow这里处理

Duilib嵌入Cef流程_第4张图片

rc是放置cef窗口的区域,可以自由调整;m_handler对象后面可以支持浏览器一些常用操作

如后退:m_handler->GetBrowser()->GoBack();

前进:m_handler->GetBrowser()->GoForward();

转到:m_handler->GetBrowser()->GetMainFrame()->LoadURL(sUrl)等等;

5、退出了,关闭是先退出消息循环之后再CefShutdown(),否则退出会崩溃;

6、接口介绍:

CefBrowser:主要的浏览器窗口类,可以用静态函数CreateBrowser()和CreateBrowserSync()来创建一个新的浏览器窗口;

CefFrame:代表一个浏览器窗口的框架,每个浏览器窗口有一个顶层的主框架,而这个主框架可以用GetMainFrame()方法得到。

CefClient:主浏览器窗口的接口类,这个接口作为参数传递给CreateBrowser();

CefRequest:代表URL,方法,发送数据和头文件等这样的请求;

CefSchemeHandleFactory:被用来处理类似myscheme://mydomain客户计划的请求;

CefReadHandler和CefWriteHandle:是一个读写的简单接口;

CefV8Handler,CefV8Value和CefV8Context是被用来创建和访问JavaScript对象

demo效果如下:

Duilib嵌入Cef流程_第5张图片

本文只是一个简单的调用的例子,功能很不完善,仅供参考

资源地址:http://download.csdn.net/download/xianzongtanxun/10250428

 

 

你可能感兴趣的:(网络)