CEF完整嵌入DUI窗体(二) --在程序中初始化Cef
来源:互联网 发布:河北秦淮数据有限公司 编辑:程序博客网 时间:2024/05/21 06:59
从那里下载Cef3的资源?
Cef3的各个版本下载地址:https://bitbucket.org/chromiumembedded/cef。这个地址不用翻墙就可以下载,但都是最近的版本,老版本的下载地址已经找不到了… 最后一个支持windowsXP的版本是3.2623,我用的也是这个版本。下载地址在这里:http://pan.baidu.com/s/1jIgLoaU。 debug版本的资源有七百多兆,需要的朋友可以联系我。
怎么在windows上编译cef3?
下载一个Cmake工具即可轻松生成sln文件,打开编译即可,可能会报错编译不通过,将警告视为错误选项修改为 否即可,这里默认是将警告视为错误的;
打开解决方案资源管理器如图所示:
libcef_dll_wrapper 是在讲libcef的C接口做了一个C++的封装,我们调用的时候使用的将是libcef_dll_wrapper的C++接口,cefsimple是cef3嵌入到MFC的一个简单实例,cefclient则是一个全面的Cef3的功能实现,我们自己开发功能的时候也多是参照这个工程来改,但更具体的实现还是需要自己动手。关于怎么在windows上配置Cef3的这个工程,网上的资料多如牛毛,我这里就不再累赘了。我这里里主要讲解如何将Cef3内嵌浏览器的功能封装成一个Duilib的浏览器空间来使用,实现了有关接口回调到最上层应用,C++和浏览器的js相互调用等功能,具体如何,各位看官长眼:
想在自己的工程中添加Cef浏览器,首先要在程序入口处调用Cef的初始化操作,我们将这个接口封装到静态函数中,以保证在main函数中就能调用到;
//高DPI支持 CefEnableHighDPISupport(); //没有实现沙箱 void* sandbox_info = NULL; CefMainArgs main_args(hInstance); CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine(); command_line->InitFromString(::GetCommandLineW()); if (!PathIsDirectory(cache_path.ToWString().c_str())) { SHCreateDirectory(NULL, cache_path.ToWString().c_str()); } if (!PathIsDirectory(log_file.ToWString().c_str())) { SHCreateDirectory(NULL, log_file.ToWString().c_str()); } //不同进程创建不同的app CefRefPtr<CefApp> app; reeiss_cef::ProcessType process_type = ClientApp::GetProcessType(command_line); if (process_type == reeiss_cef::BrowserProcess) { app = new ClientAppBrowser(); } else { return false; } //这里是对Cef的一些全局设置 CefSettings settings; CefSettingsTraits::init(&settings); //这个设置能实现单进程运行Cef浏览器插件,我们实际应用中采用的是双进程模式,即一个主进程,一个render渲染进程 //settings.single_process = true;settings.no_sandbox = true; //设置渲染进程的名称,因为在相同目录下,没有指定路径 CefString(&settings.browser_subprocess_path).FromWString(L"Render.exe"); //禁用Cef的消息循环,采用DuiLib的消息循环 settings.multi_threaded_message_loop = true; //设置本地语言 CefString(&settings.locale).FromWString(L"zh-CN"); //缓存数据路径 CefString(&settings.cache_path).FromWString(cache_path); //debug日志路径 CefString(&settings.log_file).FromWString(log_file); //初始化cef的全局操作 CefInitialize(main_args, settings, app.get(), sandbox_info); return true;
当程序结束运行时,需要调用CefShutdown();接口来释放资源,如果没有调用这个的话,可能会出现进程假死的状态,将这两个接口放在一起,在main函数开始时调用初始化,在结束处调用关闭,即可安全的在程序中创建浏览器控件了。
- CEF完整嵌入DUI窗体(二) --在程序中初始化Cef
- CEF完整嵌入DUI窗体(一) --Cef3简介
- CEF完整嵌入DUI窗体(三) --基本浏览器功能
- CEF完整嵌入DUI窗体(四) --将浏览器的回调通知应用层
- CEF完整嵌入DUI窗体(五) --JS调用C++注册的函数
- 嵌入CEF到MFC程序
- CEF 嵌入到MFC的流程,包括启动CEF以及CEF程序的关闭流程。
- 20150622 CEF嵌入MFC对话框程序
- CEF
- 在mfc中使用cef
- MFC嵌入CEF
- 如何将Chromium Embedded Framework (CEF) 嵌入到你自己的程序中
- CEF3自研究笔记 三、将CEF嵌入到MFC对话框程序中去
- 如何将Chromium Embedded Framework (CEF) 嵌入到你自己的程序中
- CEF方面的研究(三) 将CEF嵌入MFC对话框程序
- MFC嵌入CEF关闭程序时崩溃的解决方法
- MFC嵌入浏览器框架CEF
- MFC应用程序中嵌入一个谷歌cef浏览器
- 扩栈代码
- Servlet
- OutOfMemory模拟(二)
- 关于反射机制的一些示例
- hdu2063[过山车] 二分图匹配 匈牙利算法
- CEF完整嵌入DUI窗体(二) --在程序中初始化Cef
- Andioid_手动 滑动图片
- 购买装备(“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛
- 初识javaDate与字符串
- 利用ffmpeg将pcma和h264合成MP4
- 在Redis中使用Lua
- vb.net 教程 4-5 文件操作 File 2
- GIT 常用命令
- Android studio 中输入法中文提示不跟随光标的解决方案