赞
踩
嵌入式Chromium框架(简称CEF) 是一个由Marshall Greenblatt在2008建立的开源项目,它主要目的是开发一个基于Google Chromium的Webbrowser控件。CEF支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去。
它的设计思想政治就是易用且兼顾性能。CEF基本的框架包含C/C++程序接口,通过本地库的接口来实现,而这个库则会隔离宿主程序和Chromium&Webkit的操作细节。它在浏览器控件和宿主程序之间提供紧密的整合,它支持用户插件,协议,javascript对象以及javascript扩展,宿主程序可以随意地控件资源下载,导航,下下文内容和打印等,并且可以跟Google Chrome浏览器一起,支持高性能和Html5 技术,
首先把这段代码插入到窗口的创建函数里面去:
这段代码你可以在[test]文件夹下面的cefclient工程里面看到。
include -- 这个文件夹里面放CEF客户应用程序所需的头文件
libcef -- 此文件夹存放CEF的静态库
libcef_dll -- 此文件夹CEF的动态拉链库
tests -- 此文件夹存放测试的例子
cefclient -- 一个简单的客户程序
unittests -- CEF界面单元测试
这部分讲解CEF的分支信息并介绍下载编译和打包源代码
发布版本 | Chromium版本 | CEF1支持性 | CEF3支持性 |
963 | 17 | 是 | 否 |
1025 | 18 | 是 | 否 |
1084 | 19 | 是 | 否 |
1180 | 21 | 是 | 是 |
1271 | 23 | 是 | 是 |
1364 | 25 | 是 | 是 |
1453 | 26 | 是 | 是 |
http://chromiumembedded.googlecode.com/svn/trunk/cef1/tools/automate /path/to/automate
python /path/to/automate/automate.py --download-dir=/path/to/download --url=http://chromiumembedded.googlecode.com/svn/branches/1084/cef1
svn co http://src.chromium.org/svn/trunk/tools/depot_toolsC. 增加 depot_tools的目录到你的PATH,在Windows下depot_tools的路径应该要放在TortoiseSVN的前面
cd /path/to/chromium gclient config http://src.chromium.org/chrome/trunk/srcremind: 上面这段你只要复制到cmd里面去运行就可以了
cd /path/to/chromium gclient sync --revision src@chromium_revision --jobs 8 --force4. 下载CEF源代码到"cef"文件夹,而且这个文件夹必须包含在Chromium的"src"文件夹目录下,你最好只下载CEF1或CEF3而不要两者都下,假设你的Chromium源代码下载在 "/path/to/chromium/src",那么你的CEF源代码就应该放在"/path/to/chromium/src/cef"。注意不管你下的是CEF1或CEF3,文件夹名都必须命名为"cef"
cd /path/to/chromium/src svn co http://chromiumembedded.googlecode.com/svn/trunk/cef1 cef
cd /path/to/chromium/src/cef/tools build_projects.sh Debug
cd /path/to/chromium/src/cef/tools make_distrib.sh如果这个过程成功了,一个二进制的分发包会生成在 /path/to/chromium/src/cef/binary_distrib目录中。
使用CEF便捷的创建一个全功能的内建浏览器如下所示:
// Define an instance of our CefHandler implementation. Various methods in the MyHandler // instance will be called to customize browser behavior. CefRefPtr<CefHandler> handler(new MyHandler()); // Provide information about the parent window, client rectangle, etc. CefWindowInfo info = {...}; // Create the new browser window object, which eventually results in a call to // MyHandler::HandleAfterCreated(). CefBrowser::CreateBrowser(info, false, handler, L"http://www.google.com");
在tests目录下有一个客户端程序的示例,叫cefclient。
CEF资料库结构如下:
浏览器通知是通过注册的委托接口由浏览器发到客户端程序的通知, CefHandler是最主要的委托接口, CefJSHandler则用于实现自定义的Javascript对象。
CefHandler支持以下接口:
CefV8Handler支持以下通知:
浏览器事件由客户端应用程序通过CefBrowser和CefFrame的函数发送给浏览器:
CEF支持创建Netscape-style内嵌插件,使用相同 NPAPI的内嵌插件和标准的DLL插件行为相同,但是,相对于使用独立的DLL,内嵌插件由容器应用程序创建,并通过调用CefRegisterPlugin()注册到系统,如果要直接使用这一功能,需要include cef_nplugin.h .
CEF支持可以和原生应用程序代码交互的Javascript扩展,参见cef.h的CefRegisterExtension() 函数和cefclient示例程序的"JavaScript Extension Handler" 以及 "UI App Example" 测试 .
CEF支持注册与处理自定义scheme,类似于myscheme://mydomain。参见cef.h中的CefRegisterScheme()函数与示例应用程序cefclient中的 "Scheme Handler" 测试.
CEF所有的类以Cef为前缀.
UI消息循环由框架创建的一个单独线程处理,客户端程序应负责通过分别调用CefInitialize()和CefShutdown() 来为每个进程准备与关闭这一线程。
所有实现了CefBase接口的框架类与对象指针都由CefRefPtr智能指针实现来处理,通过调用AddRef()和Release()自动处理引用计数。
CEF框架被设计成平台无关,需要当前我们仅支持windows平台,但是我们计划将来支持其它平台。为了尽可能减少双平台支持带来的麻烦,框架定义了一系列实现无关的接口与类型定义包装跨平台的行为。
框架的所有接口实现必须是跨线程访问安全的,CefThreadSafeBase 模版提供原子的AddRef() 和 Release() 实现,还提供Lock() 和 Unlock()方法以同步方式访问代码块.
框架定义了如下接口:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。