cef3 java demo_windows下CEF3开发环境搭建(下)

上篇主要对CEF3基本环境的搭建和demo工程的配置进行了详细的说明,本文继续深入,主要针对如何改进demo工程,使之支持VC与JS的相互调用。

在开始正文之前,有必要简单介绍下CEF的多进程架构。CEF3应用程序通常包括一个Browser主进程,和其他几个子进程,分别为:渲染进程(Render)、GPU加速进程(GPU)、插件进程(NPAPI或者PPAPI)、多用途进程(Utility)。下图是我截取的demo程序的进程组运行情况:

e78706a1f962

多进程的好处很多,在浏览器中最主要的好处是当一个页面或者插件崩溃或假死,不会给其他页面带来影响。CEF3的进程之间可以通过IPC进行通信。Browser和Render进程可以通过发送异步消息进行双向通信。甚至在Render进程可以注册在Browser进程响应的异步JavaScript API。在CEF3中,Browser和Render进程间可以通过SendProcessMessage(CefProcessId target_process,  CefRefPtr message)函数实现消息传递。

e78706a1f962

CEF框架定义了一整套开发框架,它允许应用程序通过继承和重载相应的接口实现功能的多态。比如,我们需要控制浏览器初始开窗的行为,可以重载CefBrowserProcessHandler这个基类,实现相关的方法。CEF框架非常复杂,我的了解也非常浅薄,目前也只是仅仅跑通了VC与JS相互通讯的基本流程,特将要点记录如下。

实现步骤:

第一步:实现自己的渲染进程(Render)。

CEF框架规定VC和JS的交互逻辑是在Render中实现的,这里我们需要重载Render,注册自己的JS函数,由前端页面发起调用。

新建simple_render.h和simple_render.cc两个文件,录入以下内容:

simple_render.h内容如下:

#pragma once

#include "include/cef_app.h"

// 渲染处理器接口

class SimpleRender

: public CefApp

, public CefRenderProcessHandler

{

public:

SimpleRender();

virtual ~SimpleRender() {}

// 指示渲染处理器对象

virtual CefRefPtr GetRenderProcessHandler() override;

// 初使化JS扩展函数

virtual void OnWebKitInitialized() override;

// 初使化Window上下文,绑定自定义函数

virtual void OnContextCreated(CefRefPtr browser,

CefRefPtr frame,

CefRefPtr context) override;

protected:

// V8引擎回调处理器

CefRefPtr m_v8Handler;

private:

IMPLEMENT_REFCOUNTING(SimpleRender);

};

simple_render.cc内容如下:

#include "simple_render.h"

#include 

#include "simple_jshandler.h"

SimpleRender::SimpleRe

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值