本教程详细介绍如何在Visual Studio 2010环境下,集成CEF3 90.6.0版至MFC应用程序,并通过JavaScript与C++进行交互。
本段落将详细介绍如何在Visual Studio 2010(VS2010)环境下使用Chromium Embedded Framework(CEF3)的90.6.0版本将其嵌入到MFC应用程序中,并实现JavaScript与C++代码之间的交互功能。
首先,需要安装并配置好VS2010。创建一个新的MFC项目时,请选择“文件”>“新建”>“项目”,在模板列表中找到并选择“MFC应用”。为该项目命名(例如命名为TestApp),并在指定位置保存。
接着是下载和解压缩CEF3的90.6.0版本库。此步骤完成后,将包含CEF运行时文件、头文件及库文件在内的解压内容放置在项目的某个子目录下,如“cef”。
接下来,在MFC项目中添加对这些CEF相关资源的引用。具体操作是在VS2010环境中右键点击项目名称选择属性设置,“配置属性”>“CC++”>“常规”选项卡下的附加包含目录里填入CEF头文件路径;同时在“链接器”>“输入”的附加依赖项中添加相应的库文件。
为了将CEF3嵌入到MFC窗口,需要创建并使用一个继承自`CEFRenderWidgetHost`的子类,并重写其必要方法。此外,在MFC对话框或视图类内加入这个定制化的CEFRenderWidgetHost实例作为成员变量,并在初始化阶段进行相应的设置。
值得注意的是,必须确保实现CEFMFC消息循环和常规MFC消息循环之间的同步机制。这通常涉及通过处理WM_PAINT、WM_SIZE等特定的消息来协调两者的工作流程,在自定义的`CEFRenderWidgetHost`子类中还需要响应来自CEF框架的各种回调事件以保持一致性。
关于JavaScript与C++间的交互,可以通过注册一个实现`CefMessageRouterBrowserSide::Handler`接口的对象,并在该对象内提供对应的处理函数。这些函数会在特定情况下被JavaScript代码调用(例如通过定制的URL方案)。此外,在MFC应用中定义相应的C++方法并使用`CefRegisterSchemeHandlerFactory`进行注册,从而允许从JavaScript端发起对这些功能的请求。
示例JavaScript代码如下:
```javascript
chrome.webview.callFunction(myCppFunction, arg1, arg2, function(result) {
console.log(C++函数返回结果: + result);
});
```
在C++部分,则需要实现`myCppFunction`并确保正确处理和响应来自JavaScript的调用请求,最后通过`CefV8Context::Return`方法将执行的结果反馈给前端。
此外,在项目配置中还需设置CEF启动参数(如浏览器子进程路径、多线程消息循环等),以保证整个集成环境能够顺利运行。请注意根据实际需求调整这些参数值。
尽管本段落未提供具体源代码文件,但上述步骤应该足以指导开发者开始在VS2010+CEF3的90.6.0版本基础上创建一个MFC应用程序项目。