热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Libcef创建基于浏览器的应用程序(1)

原文地址:http:www.cnblogs.comngxianyuarchive201312083463775.html作者:粘锅咸鱼很早之前看过关于豌豆荚的一片报道,说豌豆荚

原文地址: http://www.cnblogs.com/ngxianyu/archive/2013/12/08/3463775.html   作者:粘锅咸鱼


很早之前看过关于豌豆荚的一片报道,说豌豆荚花了10个月的时间,使用c++重新实现。其界面完全采用html实现。本人之前都是使用mfc开发windows界面,为了达到要求的界面效果,我花了大量的时间在界面重绘和贴图上,所以一听说居然还有人这么搞,无比激动。熟悉mfc开发的朋友们都知道,win32 api来实现界面效果,工作量是很大的,往往一个按钮半透明效果都能把你折腾个半死,而且极容易出错。但是如果直接在应用程序中,直接嵌入ie控件是有问题的,因为ie版本差异太大,对html5支持很难保证,而使用html开发界面的核心就是htmel5的那些很炫的功能。最好能把浏览器控件一起打包发布,这样可以完全不用系统的ie版本,只要支持一种浏览器就行,这样可以大大节省web开发的精力。

  第一次关注libcef是因为,我一个在杭州实习的朋友,回学校一起交流的时候跟我说过,网易云音乐使用最新的界面架构,使用的chrome那一套。我第一反应就是安装一个试试看,发现可执行文件目录下带有libcef.dll这个文件,遂搜索了一下,发现这正是实现纯html界面所需要的东西,而且这货居然支持离屏渲染(off-screen render),可以把渲染事件回调出来。这东西配合windows下的层叠窗口,就可以实现完全用html+css定义整个界面。试想,平时最蛋疼的窗口圆角,阴影,和透明效果,不用写一行贴图代码就能实现,这简直是帅到爆有木有!!

  下载下来,花了几天时间探索了一下,参照内置的里面的代码,跌跌撞撞的,居然实现了。但是还有很多细节自己也很糊涂,而且中途遇到了很多问题,所以写个一系列随笔记录一下。

  

  废话不多说,本篇介绍将libcef项目的基本配置。

  首先进入下载页面http://www.magpcss.net/cef_downloads/,选择如下链接

  下载下来后,使用vs2010打开cefclient2010.sln这个文件。打开后,有两个项目,cefclient,libcef_dll_wrapper。其中libcef_dll_wrapper是cef的头文件项目,而cefclient相当于cef库的使用示范,展示libcef库所支持的全部功能。想着如果只在原来的项目上修修改改,肯定不能了解将libcef嵌入到程序中的所有细节,所以另开了一个win32项目。步骤如下:

  1,在cefclient2010解放方案上右键,新建项目,选择win32项目,输入项目名称,点完成。

  

  2,点击下一步

  

  3,选择win32 项目,点击完成

  

  自此,解决方案中总的就有三个项目了。此时解决方案目录情况如下:

  

  接着,将对参考cefclient项目,对我们自己进行配置,来包含libcef的头文件,导入库文件。步骤如下:

  1,由于我们在解决方案中创建项目,自动会在sln的文件夹下面,创建以项目名称命名的项目文件夹,所以include目录就在父目录中,设置包含为父目录,方便引用到cef的头文件。

  

  2,将Debug和Release的运行库分别设置为MTD和MT

  

  

  3,去除预编译头

  

  4,将cefclient的附加库复制到本项目中

  

  5,复制cefclient的附加依赖项,并黏贴到我们自己的项目中

  

  至此,项目配置好了,接下来要拷贝一些依赖的头文件和库文件,还有语言包。

  1,打开项目文件加下的out目录

  

  2,把debug的如下文件复制到我们项目的debug输出目录,把release的如下文件复制到我们项目的release输出目录

  

  3,分别打开debug下和release的lib目录(下图为debug下的lib目录),将libcef_dl_wrapper分别复制到项目的debug和目录下

  

  好不容易,前期准备工作终于做好了。下一篇将讲解如何参照cefclient,构建一个基本的libcef嵌套程序。


推荐阅读
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
author-avatar
我的小姑奶奶呦_960
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有