CEF全称Chromium Embedded Framework,是一个基于Google Chromium的开源项目。Google Chromium项目主要是为Google Chrome应用开发的,而CEF的目标则是为第三方应用提供可用的嵌入浏览器支持。CEF3不仅开源,而且跨平台,框架的开发者也在不断的更新,英文资料也较丰富,对Html5,Css3等支持也很好。目前CEF3被全球很多的公司使用,国内使用该框框架的公司也不少,比如腾讯、网易、印象笔记等。可以算的上应用最广泛的基于Google Chromium的开源项目之一。CEF3除了用作可嵌入浏览器应用,还可以用作web开发界面交互,甚至简单的浏览器。
话不多少,现在基于duilib做个客户端的浏览器,写下该文,当做笔记
1、首先需要添加继承自CefApp的类CDuiCefApp;
该类主要是进行cef相关环境的的初始化
2、添加一个cef消息交互类CDuiMsgHandler
3、两个调用cef的关键类已经好了,接下来就是cef的初始化了,我们放在winMain函数这里
CefSettings对象我们这里设置multi_threaded_message_loop=true,目的是使cef的ui线程和我们程序的线程分开,这样我们就可以使用Duilib的消息循环CPaintManagerUI::MessageLoop()而不必调用cef的CefRunMessageLoop()了;
4、接下来就是嵌入到窗口了,我们在InitWindow这里处理
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效果如下:
本文只是一个简单的调用的例子,功能很不完善,仅供参考
资源地址:http://download.csdn.net/download/xianzongtanxun/10250428