cef3 集成mfc多文档
时间: 2023-07-30 16:06:53 浏览: 99
要将CEF3集成到MFC多文档应用程序中,可以按照以下步骤进行操作:
1. 在Visual Studio中创建一个MFC多文档应用程序项目。
2. 下载CEF3库并解压缩到项目文件夹中。
3. 将CEF3库的头文件路径添加到项目属性中的“C/C++” -> “常规” -> “附加包含目录”中。
4. 将CEF3库的库文件路径添加到项目属性中的“链接器” -> “常规” -> “附加库目录”中。
5. 在项目属性中的“链接器” -> “输入” -> “附加依赖项”中添加以下依赖项:
libcef.lib
libcef_dll_wrapper.lib
libcef_dll.lib
6. 在MFC多文档应用程序的主窗口类中,添加一个成员变量CefRefPtr<CefBrowser> m_browser; 用于保存浏览器实例。
7. 在主窗口类的OnCreate()函数中添加以下代码:
CefMainArgs main_args(GetModuleHandle(NULL));
CefSettings settings;
CefRefPtr<CefApp> app(new MyApp);
CefInitialize(main_args, settings, app.get(), NULL);
RECT rect;
GetClientRect(&rect);
CefBrowserSettings browser_settings;
m_browser = CefBrowserHost::CreateBrowserSync(this->GetSafeHwnd(), browser_settings, CefString("about:blank"), CefBrowserHost::kFlagNone, NULL, NULL);
m_browser->GetHost()->SetSize(PET_VIEW_WIDTH, PET_VIEW_HEIGHT);
m_browser->GetHost()->WasResized();
8. 在主窗口类的OnDestroy()函数中添加以下代码:
m_browser->GetHost()->CloseBrowser(true);
m_browser = NULL;
CefShutdown();
9. 在MyApp类中实现以下函数:
virtual void OnBeforeCommandLineProcessing(const CefString& process_type, CefRefPtr<CefCommandLine> command_line) OVERRIDE
{
command_line->AppendSwitch("--disable-gpu");
command_line->AppendSwitch("--disable-gpu-compositing");
command_line->AppendSwitch("--disable-software-rasterizer");
}
10. 在MFC多文档应用程序的文档类中添加一个成员变量CefRefPtr<CefBrowser> m_browser; 用于保存浏览器实例。
11. 在文档类的OnInitialUpdate()函数中添加以下代码:
CRect rect;
GetClientRect(&rect);
CefBrowserSettings browser_settings;
m_browser = CefBrowserHost::CreateBrowserSync(this->GetSafeHwnd(), browser_settings, CefString("about:blank"), CefBrowserHost::kFlagNone, NULL, NULL);
m_browser->GetHost()->SetSize(rect.Width(), rect.Height());
m_browser->GetHost()->WasResized();
12. 在文档类的OnCloseDocument()函数中添加以下代码:
m_browser->GetHost()->CloseBrowser(true);
m_browser = NULL;
13. 在文档类的OnSize()函数中添加以下代码:
if (m_browser && m_browser->GetHost())
{
CRect rect;
GetClientRect(&rect);
m_browser->GetHost()->SetSize(rect.Width(), rect.Height());
m_browser->GetHost()->WasResized();
}
现在,您就可以在MFC多文档应用程序中显示多个CEF3浏览器实例了。
阅读全文