MFC内嵌cef3浏览器内核

一、cef3内核的下载

可以从http://opensource.spotify.com/cefbuilds/index.html下载,注意:很多版本编译都可以通过 但是运行的时候会崩溃,以cef_binary_3.2704.1414.g185cd6c_windows32为例,该版本debug编译都可以通过,运行的时候加载本地网页会出现错误,原因未知,加载www.baidu.com,关闭的时候会出现崩溃的情况,release版本完全正常,

 

二、使用cmake创建成vs工程

本文创建为vs2015,

打开vs工程文件,,编译libcef_all_wrapper,另外编译自带cefsimple,从libcef_dll_wrapper文件下的生成目录debug或者release获取libcef_dll_wrapper.lib,另外要把cefsimple需要的依赖都拷出来,后面作为我们demo必要的依赖。

三、cef相关文件夹介绍

 

文件夹介绍

(1)cmake,该文件夹包含Cmake的一些宏定义,配置信息。

(2)include,使用该库的所有头文件

(3)libcef_dll,库的源代码

(4)tests,测试程序demo源代码

(5)Resource,资源文件

该资源文件是程序运行需要依赖的资源文件,含语言包,unicode支持等

(6)Debug/Release,程序依赖的动态库/静态库。但不包括C++库:libcef_dll_wrapper.lib。

1、必须文件,缺少任意一个CEF将无法运行:
libcef.dll
    这个不用多说,CEF的核心库文件,js引擎、网页加载渲染逻辑等都在其中,也是size最大的一个文件(Release版将近50M,Debug版超过500M)。
icudtl.dat 
    用来支持unicode,缺少这些文件虽然编译能通过,但是执行CefInitialize();的时候就会崩溃,在这个坑趴了很久还以为是代码问题。
natives_blob.bin
snapshot_blob.bin

    V8引擎快照数据。
2、可选文件:
locales/
    该目录包含CEF,Chromium和Blink使用的本地化资源。 CefSettings.locale指定需要加载的.pak文件。 只需要发布配置的区域对应的.pak文件。

如果没有区域设置将配置默认语言环境“en-US”。如果没有这些文件任意Web组件可能显示不正确。
cef.pak
cef_100_percent.pak
cef_200_percent.pak

    这些文件包含了供CEF使用的区域无关资源,缺少这些文件任意Web组件可能显示不正确。(笔者当时缺少cef_100_percent.pak

cef_200_percent.pak两文件,导致视频控件不显示音量和最大化按钮)。
cef_extensions.pak

    此文件包含扩展加载所需的非本地化资源传递`--disable-extensions`命令行标志来禁止使用文件。没有这个文件,依赖于扩展系统的组件将不起作用,如PDF查看器。

devtools_resources.pak

    此文件包含Chrome开发者工具所需的非本地化资源,缺少这个文件,Chrome开发者工具将无法运行。
d3dcompiler_43.dll (Windows XP需要该文件)
d3dcompiler_47.dll (Windows Vista和更高版本的系统需要该文件)
libEGL.dll
libGLESv2.dll

    Direct3D支持文件,如果缺少这些文件,HTML5在渲染2D画布,3D CSS,WebGL时将不起作用。
wow_helper.exe

    用来支持Windows Vista 64位沙箱。如果没有这个文件,32位的CEF将无法在开启了沙箱的64位的Vista机器上运行。

 

四、测试demo的创建

1、创建mfc对话框工程,将cef_sandbox.lib、libcef.lib、libcef_dll_wrapper.lib拷到项目中,并添加相应依赖,将源码中的include文件夹添加到项目中。

2、将本人上传的的文件资源https://download.csdn.net/download/venice0708/11285714下载并添加到工程中,作为后面c++调用js和JS调用c++的依赖。

3、创建CTestWeb继承IWebEventCallBackBase。

4、在BOOL CnewCef3DemoDlg::OnInitDialog(),添加

 

关闭的时候需要调用GetCefInstance()->ExitInstance();

五、c++调用js

在本人的依赖中有 GetCefInstance()->RunJS(pTestWeb->GetWebID(), L"sendMessage", 1, JsDataStr.GetBuffer());

第一个参数为该网页的ID号,第二个为js的函数名,第三个为总的参数个数,第四个为参数,详情请看源代码。

六、JS调用c++

在上文的依赖代码中需要进行c++函数的注册

在js代码中只需要CallWkeWebkit("CCjsCallCpp", "666");即可,详细的可以参照一些网友的做法。

 

本文只要是写了一些项目中研究的大体思路,方便以后查阅,类似的博文网上很多,详细可以参考其他网友的!

### 回答1: MFC CEF4浏览器是一种基于Microsoft Foundation Classes(MFC)的Chromium Embedded Framework(CEF)的浏览器。它可以在Windows环境下运行,使用CEF作为浏览器引擎,支持常见的浏览器功能,如网页浏览、HTML5、CSS3、JavaScript等。与其他浏览器不同的是,MFC CEF4浏览器的界面和功能可以根据开发者自己的需求进行扩展和定制,可用于构建自己的浏览器应用程序。此外,该浏览器还支持多线程并发操作和消息机制,以便在程序运行时进行后台处理,保证了应用程序的性能和稳定性。总之,MFC CEF4浏览器是一种强大的浏览器开发框架,可以帮助开发者快速构建高性能、稳定的浏览器应用程序,满足用户对于浏览器的各种需求。 ### 回答2: MFC CEF4浏览器是基于微软MFC框架和Chromium Embedded Framework 4(CEF4)技术实现的浏览器。MFC是一种Windows平台上的应用程序开发框架,可以用于构建Windows下的本机应用程序。CEF4是一种嵌入式浏览器框架,可以将Web内容嵌入到本地应用程序中,同时保留所有原生Chrome浏览器的功能。 使用MFC CEF4浏览器,开发人员可以快速开发具备浏览器功能的本地应用程序。MFC提供了丰富的控件和类库,可以帮助开发人员轻松实现界面设计和控件布局。CEF4作为浏览器框架,可以在本地应用程序中嵌入Web内容,同时保留原生浏览器的所有功能,比如JavaScript执行、CSS渲染、插件支持等等。 MFC CEF4浏览器具有以下特点:易于开发、高效、灵活、可扩展性强、支持多线程、可跨平台、安全性高等等。因此,它被广泛应用于一些领域,比如教育、游戏、医疗、金融等等。开发人员可以根据自己的需求,选择采用MFC CEF4浏览器来开发本地应用程序,从而实现快速部署、高效运行、稳定可靠的目的。 ### 回答3: MFC CEF4浏览器是一种基于Microsoft Foundation Class (MFC)和Chromium Embedded Framework (CEF)技术的浏览器。它实现了嵌入式浏览器的功能,可以在应用程序中嵌入浏览器窗口,使用户可以浏览网页,同时还可以在应用程序中进行一些自定义操作。 使用MFC CEF4浏览器,可以方便地实现应用程序中内嵌浏览器的功能,无需单独打开浏览器窗口。同时,它还支持多种浏览器控件,例如地址栏、前进、后退和刷新按钮等,还可以自定义网页的样式和设置。 MFC CEF4浏览器的优点包括具有高性能、跨平台性、易于使用和灵活性。它可以通过简单的代码实现各种浏览器功能,如自动化操作、页面截图和脱机浏览等。 总之,MFC CEF4浏览器提供了一种方便、快速、可靠的方式来嵌入浏览器窗口,并且具有很多灵活的自定义选项。对于那些需要在应用程序中集成浏览器的开发人员,它是一种有效的工具。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值