libcef mfc(2)

第一篇文章只是一个前奏,现在开始正题。首先申明的是,我的开发环境是:win7 64位,编译器:vs2013 update4。接着上一篇文章说起,当我们下载好了之后,下载下来的demo,cefclient和cefsimple稍稍改动就能运行。cef运行主要依赖的库就是libcef_dll_wrapper.lib和libcef.lib这俩,现在就开始把简单的那个demo跑起来,我的示例是debug下的。最好先看下我的第一篇文章:点击打开链接


编译器打开后会自动让你升级,单项升级就可以了,完了之后工程自然就是2013的了,如果您看到以下画面:


说明你的工程还是2010的,需要手动升级。那么请工程项目处鼠标右键,出现如下图:


单击方框内选项可升级到如下图


这样就是一个2013的工程了。


现在你去编译这个工程的时候会报链接错误,那是因为libcef_dll_wrapper.lib库你没有添加进去。请编译libcef_dll_wrapper.vcxproj工程,out目录下生成libcef_dll_wrapper.lib库,别说你找不到out目录。然后simple工程将这个库链接上就可以了。我是这么做的:


设置工程链接库


将libcef_dll_wrapper.lib拷贝到debug目录下。然后编译运行:



你试试右键,还有菜单呢~~~


到此为止一个win32窗口的简单demo算是跑起来了,很简单,复杂例子亦如此。接下来就是怎么将复杂例子在MFC中跑起来。一步步来吧:

生成的窗口如下:


中间有个控件和按钮被我删了,其他的我没动。

1. 将下载的cef的复杂例子cefclient拷贝过来放在工程这个位置,只要cpp和h文件,cefclient_win.cpp不要了,这是win32下的,还有一个叫resource.h也不要了,因为mfc工程是有这个资源文件的。

2.将下载的cef的include文件夹整个拷贝过来,放在该位置。

3. 新建一个bin文件夹,将下载的cef的debug目录下的全部拷贝到bin目录下,将cef的out目录下的libcef_dll_wrapper.lib也拷贝到该目录,将cef的资源文件夹Resources下的所有文件全部拷贝到这个目录下,如下图:


在MFC工程下新建一个cefclient文件夹,然后将前面拷贝过来的cefclient文件夹下的所有文件全部添加到这个工程文件夹下里。如下图:


接下来是工程设置:


接下来编译,会报错,凡是打不开resources.h报错的,改为:#include "resource.h"

std::min去掉std::

fopen改为fopen_s,别说你不会改

将原来cef里的resources.h文件里的宏定义全部拷贝到现在MFC工程里的resources.h里,注意有宏重复定义的警告,可以无视

接下来的链接错误改法是将调到 AppGetWorkingDirectory 和AppQuitMessageLoop的函数注释掉,这俩函数原来是cefclient_win.cpp里实现了的函数,此处可以不要了。

到此为止,编译通过。


接下来开始内嵌browser到mfc窗口了........

首先cef的初始化和退出,在CefMFC类里:




然后是CefMFCDlg窗口类里创建浏览器:


通过类向导添加create和size这俩函数,不知道类向导就去百度一下。




到这里代码基本就完了,运行会中断,那是因为改成mfc之后,造成的,这样改:


这些注释了之后,再把相关联的一注释,MFC复杂内嵌就算是搞定了。把复杂例子内嵌进来就是为了后期js和c++互相调用做准备的,这么多代码,强迫症的你觉得好像把垃圾搞进去了,不要乱删除,你怎么知道你后面不用呢?如果你按照我这个步骤还是搞不定的话,那我就无话可说了。很多人在往自己工程里添加cef的时候会忘了将Resources下的资源文件一并拷贝过来,在运行的时候会出现中断,死活找不到问题,一定要小心了。

我特地说明一下,我自己机器上编译的共享MFC DLL版本是能编译运行的,但是到了别人机器上就会编译不过。问题我还没找到,但是静态的版的都没问题,但是你需要这样设置:

附加依赖库:uafxcwd.lib;LIBCMTD.lib;
忽略特定默认库:LIBCMTD.lib;uafxcwd.lib

下一篇文章我将不再讲MFC了,因为目前这个MFC+CEF还是个半成品,后面你得自己丰衣足食了。我会详细讲解cefclient这个复杂的例子,包括js和C++的互相调用,以及UI进程和渲染进程间怎么通信。懂了之后在MFC上,同样运用就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cef3 mfc 测试demo windows vs2015工程 windows vs2015中mfc开发的嵌入式浏览器DEMO,完整工程,包含了库文件libcef_dll_wrapper.lib和libcef.lib。 1、库版本为cef_binary_3.2704.1414.g185cd6c_windows32,引用于http://opensource.spotify.com/cefbuilds/index.html。 如需要其它版本或VS2013/vs2017等编译的库,可以去opensource.spotify.com下载自行编译,编译需要安装 cmake. 2、工程引用于https://github.com/xiaonaiquan/CEF3,github上缺少了上面的库。 3、此工程为MFC工程,只适用于WINDOWS。opensource.spotify.com中的原装示例不是MFC的,而是标准windows库的。 使用的cef版本为cef_binary_3.2704.1414.g185cd6c_windows32 此demo编译,VS2015 实现了C++和js交互 使用CEF时,加载的网页,如果里面有链接,指定target=”_blank”,则会弹出一个新的浏览窗口。如果想禁掉,让新页面在当前浏览窗口中显示,可以在browser进程的handler里重写CefLifeSpanHandler的OnBeforePopup方法,用browser的mainFrame加载popup请求的url 使用flash的方法在我CSDN博客中,把代码加入进来就可以了。 browser和render进程分别继承CefAPP test.html是网页测试用例 解决flash有黑框 : http://blog.csdn.net/zhuhongshu/article/details/77482985 实现下载功能(是网页上触发下载,并不是MFC触发下载) GO按钮增加了快捷键回车 增加F5刷新 增加前进和后退按钮 增加右键和F12开发者选项调试网页 增加cookie 参考 : https://github.com/xiaonaiquan/CEF3 http://opensource.spotify.com/cefbuilds/index.html

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值