本教程详细介绍如何在基于Microsoft Foundation Classes (MFC)的应用程序中集成CEF7版本的Google Chrome浏览器内核,实现网页浏览功能。
本段落将详细介绍如何在MFC(Microsoft Foundation Class)应用程序中集成谷歌的CEF7(Chromium Embedded Framework)。该框架允许开发者把Chrome浏览器的核心渲染引擎嵌入到自己的应用里,从而为用户提供现代Web标准支持。
首先,在Visual Studio 2010环境中创建一个新的MFC项目,并选择“空项目”模板。接下来,你需要下载并安装CEFT的源代码及其所需的库文件。特别注意的是要确保获取适用于64位系统的CEF7版本以及与VS2010兼容的预编译静态库或自行构建。
接着,在项目的属性设置中添加包含目录和附加依赖项以指向CEF的相关头文件、库文件及bin目录,具体操作在“配置属性”>“CC++”中的“常规”的“附加包含目录”,以及在“链接器”>“输入”的“附加依赖项”。
为了实现浏览器的集成,在MFC应用中需要引入`cef.h`和 `cef_app.h`头文件。定义一个继承自`CefApp`类的子类,例如命名为`CefAppSubclass`, 并重写必要的接口方法如初始化上下文的方法。
在主窗口类(比如`CMainFrame`)内添加一个用于管理CEF浏览器实例的成员变量类型为 `CefBrowserHost* browser_host;`. 创建CEF浏览器窗口时使用如下代码:
```cpp
CefWindowInfo window_info;
window_info.SetAsChild(m_hWnd, CRect(0, 0, width, height)); // 设置窗口位置和大小
// 定义一个继承自`CefClient`类的实例,用于处理浏览器事件
CefRefPtr client_handler = new MyClientHandler();
// 初始化浏览器设置
CefBrowserSettings browser_settings;
// 使用CreateBrowserSync方法创建CEF浏览器
CefBrowserHost::CreateBrowserSync(window_info, client_handler, http://www.example.com, browser_settings, NULL);
```
其中,`MyClientHandler` 类需要继承自 `CefClient`, 并实现如生命周期事件处理和页面加载状态的接口。
此外,在窗口创建前通过修改样式支持透明度:
```cpp
ModifyStyleEx(WS_EX_TRANSPARENT, 0); // 设置窗口样式以启用透明背景。
```
确保正确处理消息循环,特别是`WM_NCCALCSIZE` 和 `WM_PAINT` 消息,以便CEF浏览器可以在MFC窗口中正常显示。
在应用的入口点(如WinMain或main)初始化和关闭CEF库。使用如下方法:
```cpp
CefInitialize(); // 初始化CEF库
// 应用程序运行结束后调用以下函数清理资源。
CefShutdown();
```
通过以上步骤,你可以在VS2010 MFC应用中成功嵌入CEF7浏览器,并支持64位系统的静态库。这将使你的应用能够展示现代网页,提供更佳的用户体验。同时可以通过定制`MyClientHandler`类来扩展功能,例如添加JavaScript交互、拦截网络请求等以满足更多需求。