zoukankan      html  css  js  c++  java
  • 【转】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、将本人上传的的文件资源http://download.csdn.net/download/venice0708/10272163下载并添加到工程中,作为后面c++调用js和JS调用c++的依赖。

    3、创建CTestWeb继承IWebEventCallBackBase。

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

    [cpp] view plain copy
     
     
    print?
    1.   
    
    

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

    五、c++调用js

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

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

    六、JS调用c++

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

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

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

    from:https://blog.csdn.net/venice0708/article/details/79461129

  • 相关阅读:
    使用 asp.net mvc和 jQuery UI 控件包
    ServiceStack.Redis 使用教程
    HTC T8878刷机手册
    Entity Framework CodeFirst 文章汇集
    2011年Mono发展历程
    日志管理实用程序LogExpert
    使用 NuGet 管理项目库
    WCF 4.0路由服务Routing Service
    精进不休 .NET 4.0 (1) asp.net 4.0 新特性之web.config的改进, ViewStateMode, ClientIDMode, EnablePersistedSelection, 控件的其它一些改进
    精进不休 .NET 4.0 (7) ADO.NET Entity Framework 4.0 新特性
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/9772314.html
Copyright © 2011-2022 走看看