Duilib嵌入cef3,实现浏览器功能

CEF3介绍:

    CEF全称Chromium Embedded Framework,是一个基于Google Chromium 的开源项目。Google Chromium项目主要是为Google Chrome应用开发的,而CEF的目标则是为第三方应用提供可嵌入浏览器支持。CEF隔离底层Chromium和Blink的复杂代码,并提供一套产品级稳定的API,发布跟踪具体Chromium版本的分支,以及二进制包。CEF的大部分特性都提供了丰富的默认实现,让使用者做尽量少的定制即可满足需求。在本文发布的时候,世界上已经有很多公司和机构采用CEF,CEF的安装量超过了100万。[CEF wikipedia]页面上有使用CEF的公司和机构的不完全的列表。CEF的典型应用场景包括:

  • 嵌入一个兼容HTML5的浏览器控件到一个已经存在的本地应用。
  • 创建一个轻量化的壳浏览器,用以托管主要用Web技术开发的应用。
  • 有些应用有独立的绘制框架,使用CEF对Web内容做离线渲染。
  • 使用CEF做自动化Web测试。

CEF3是基于Chomuim Content API多进程构架的下一代CEF,拥有下列优势:

  • 改进的性能和稳定性(JavaScript和插件在一个独立的进程内执行)。
  • 支持Retina显示器。
  • 支持WebGL和3D CSS的GPU加速。
  • 类似WebRTC和语音输入这样的前卫特性。
  • 通过DevTools远程调试协议以及ChromeDriver2提供更好的自动化UI测试。

  • 更快获得当前以及未来的Web特性和标准的能力。

    (摘取自https://github.com/fanfeilong/cefutil/blob/master/doc/CEF%20General%20Usage-zh-cn.md#request-interception ps:cef3官网的翻译文档)

CEF3 版本介绍:

    

      cef_binary_3.2171.1972_windows32:VS2005-2010可直接编译版本,也不存在3.2171.1901的外边框问题,但是输入法点位有问题。(下载链接

      cef_binary_3.2623.1401_windows32,cef3最后一个支持XP系统的版本。(下载链接cef3.2623.1395编译后文件)

      其他编译版本支持MP3等可加群:231250586

CEF3 使用介绍:

    CEF3的各个类的介绍我这就不写了,其他博客已经介绍的非常详细了,我这就直接开始说使用过程。先贴两个类:

simple_handler.h
#ifndef CEF_TESTS_CEFSIMPLE_SIMPLE_HANDLER_H_
#define CEF_TESTS_CEFSIMPLE_SIMPLE_HANDLER_H_


#include "include/cef_client.h"

#include "include/cef_base.h"
#include "include/cef_browser.h"
#include "include\base\cef_lock.h"
#include "include/cef_web_plugin.h"


#include "cef_cookie.h"
#include <list>



class SimpleHandler : public CefClient,
                      public CefDisplayHandler,
					  public CefDownloadHandler,
                      public CefLifeSpanHandler,
                      public CefLoadHandler,
					  public CefContextMenuHandler,
					  public CefCookieVisitor,
					  public CefWebPluginInfoVisitor
{
 public:
  SimpleHandler();
  ~SimpleHandler();
	

  // Provide access to the single global instance of this object.
  static SimpleHandler* GetInstance();

  // CefClient methods:
  virtual CefRefPtr<CefDisplayHandler> GetDisplayHandler() OVERRIDE {
    return this;
  }
  virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() OVERRIDE {
    return this;
  }
  virtual CefRefPtr<CefLoadHandler>		GetLoadHandler() OVERRIDE {
    return this;
  }
  virtual CefRefPtr<CefContextMenuHandler>GetContextMenuHandler() {  
    return this;   
  }
 virtual CefRefPtr<CefDownloadHandler>	GetDownloadHandler(){  
	 return this;    
 }



// CefDisplayHandler methods:
 virtual void OnTitleChange(CefRefPtr<CefBrowser> browser,
	 const CefString& title) OVERRIDE;


// CefLifeSpanHandler methods:

	/*在创建新的浏览器之后调用;*/
	 virtual void OnAfterCreated(CefRefPtr<CefBrowser> browser) OVERRIDE;

	/*当浏览器收到请求关闭时调用;*/
	 virtual bool DoClose(CefRefPtr<CefBrowser> browser) OVERRIDE;
	
	/*浏览器销毁之前调用;*/
	 virtual void OnBeforeClose(CefRefPtr<CefBrowser> browser) OVERRIDE;
	
	/*在创建新的弹出式浏览器IO线程之前调用;*/
	/*本程序主要阻止弹出,在本浏览器中打开;*/
	 virtual bool OnBeforePopup(CefRefPtr<CefBrowser> browser,
		 CefRefPtr<CefFrame> frame,
		 const CefString& target_url,
		 const CefString& target_frame_name,
		 WindowOpenDisposition target_disposition,
		  bool user_gesture,
		 const CefPopupFeatures& popupFeatures,
		 CefWindowInfo& windowInfo,
		 CefRefPtr<CefClient>& client,
		 CefBrowserSettings& settings,
		 bool* no_javascript_access) OVERRIDE;

// CefLoadHandler methods:
	 
		/*浏览器加载错误时调用;*/
	 virtual v
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值