cef3集成mfc多文档视图 详细代码过程
时间: 2023-10-05 10:14:43 浏览: 87
集成 CEF3 和 MFC 多文档视图可以参考以下步骤:
1. 创建一个 MFC 多文档视图应用程序,确保已经成功运行。
2. 下载 CEF3 库(https://cefsharp.github.io/),并解压缩到本地文件夹。
3. 在 Visual Studio 中打开项目,右键单击项目并选择“属性”。
4. 在属性管理器中,选择“所有配置”和“所有平台”,然后选择“VC++ 目录”。
5. 添加以下路径:
a. CEF3 的 include 文件夹路径,如:D:\cef_binary_3.3683.1920.g0d0c9f0_windows64\include
b. CEF3 的 lib 文件夹路径,如:D:\cef_binary_3.3683.1920.g0d0c9f0_windows64\lib
c. CEF3 的资源文件夹路径,如:D:\cef_binary_3.3683.1920.g0d0c9f0_windows64\Resources
6. 在“C/C++”选项卡中的“常规”下,添加以下项到“其他包含目录”:
a. $(SolutionDir)cef3\include
b. $(SolutionDir)cef3\include\cef
c. $(SolutionDir)cef3\include\cef\internal
7. 在“链接器”选项卡中的“常规”下,添加以下项到“其他库目录”:
a. $(SolutionDir)cef3\lib
8. 在“链接器”选项卡中的“输入”下,添加以下项到“附加依赖项”:
a. libcef.lib
b. libcef_dll_wrapper.lib
9. 在程序的初始化函数(如 InitInstance())中添加以下代码,以初始化 CEF3:
CefMainArgs main_args(hInstance);
CefRefPtr<CefApp> app(new CefApp);
CefInitialize(main_args, app, NULL);
10. 在程序关闭前(如 ExitInstance())添加以下代码,以关闭 CEF3:
CefShutdown();
11. 在文档视图类中添加以下代码,以创建 CEF3 窗口:
CefWindowInfo window_info;
CefBrowserSettings browser_settings;
window_info.SetAsChild(hWnd, rect);
CefRefPtr<CefClient> client(new CefClientImpl(this));
CefBrowserHost::CreateBrowserSync(window_info, client.get(), url, browser_settings, NULL);
12. 创建 CefClientImpl 类,该类继承自 CefClient 类,并实现必要的回调函数。
13. 在 CefClientImpl 类中添加以下代码,以处理窗口消息:
if (message == WM_SIZE)
{
if (m_Browser.get())
{
CefWindowHandle hwnd = m_Browser->GetHost()->GetWindowHandle();
if (hwnd)
{
RECT rect;
::GetClientRect(hWnd, &rect);
::SetWindowPos(hwnd, NULL, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, SWP_NOZORDER);
}
}
}
14. 在 CefClientImpl 类中添加以下代码,以处理关闭窗口:
if (message == WM_CLOSE)
{
if (m_Browser.get())
{
CefRefPtr<CefBrowserHost> host = m_Browser->GetHost();
if (host.get())
{
host->CloseBrowser(false);
return true;
}
}
}
这些步骤可以帮助您集成 CEF3 和 MFC 多文档视图。请注意,这只是一个大致的指南,您可能需要根据自己的需求进行调整。
阅读全文