cef3集成mfc多文档视图 详细过程
时间: 2023-10-05 19:14:43 浏览: 79
以下是详细的CEF3集成到MFC多文档视图的过程:
1. 创建MFC多文档应用程序
打开Visual Studio,选择“文件”>“新建”>“项目”,在左侧“Visual C++”下选择“MFC应用程序向导”,然后在右侧选择“多文档”应用程序类型。
2. 下载CEF3库文件
从CEF官网上下载最新的CEF3库文件,解压缩到本地文件夹中。
3. 将CEF3库文件添加到项目中
将CEF3库文件中的“Release”文件夹中的所有文件复制到MFC应用程序的“Debug”文件夹中。将CEF3库文件中的“Resources”文件夹中的所有文件复制到MFC应用程序的“Debug”文件夹中的“Resources”子文件夹中。
4. 添加CEF3头文件和链接库
在Visual Studio中,打开项目属性。在“VC++目录”中,添加CEF3库文件的头文件路径。在“链接器”中,添加CEF3库文件的链接库路径。在“输入”中,添加CEF3库文件的链接库名称。
5. 创建CEF3窗口
在MFC应用程序中,创建一个新的类来表示CEF3视图。在该类中,包含以下代码段:
```
#include "cefclient.h"
#include "client_handler.h"
class CefView : public CWnd
{
public:
CefView() {}
virtual ~CefView() {}
protected:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
afx_msg void OnSize(UINT nType, int cx, int cy);
DECLARE_MESSAGE_MAP()
CefRefPtr<ClientHandler> m_ClientHandler;
IMPLEMENT_REFCOUNTING(CefView);
};
```
6. 实现CEF3窗口的函数
实现CEF3视图的以下函数:
```
BEGIN_MESSAGE_MAP(CefView, CWnd)
ON_WM_CREATE()
ON_WM_DESTROY()
ON_WM_SIZE()
END_MESSAGE_MAP()
BOOL CefView::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;
cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
return TRUE;
}
int CefView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;
CefSettings settings;
CefInitialize(settings);
CefWindowInfo window_info;
CefRefPtr<ClientHandler> client_handler(new ClientHandler);
m_ClientHandler = client_handler;
RECT rect;
GetClientRect(&rect);
window_info.SetAsChild(m_hWnd, rect);
CefBrowserSettings browser_settings;
std::string url = "https://www.baidu.com";
CefBrowserHost::CreateBrowserSync(window_info, client_handler.get(), url, browser_settings, NULL);
return 0;
}
void CefView::OnDestroy()
{
CefShutdown();
CWnd::OnDestroy();
}
void CefView::OnSize(UINT nType, int cx, int cy)
{
CWnd::OnSize(nType, cx, cy);
if (m_ClientHandler.get() != NULL && m_ClientHandler->GetBrowser().get() != NULL)
{
CefRect rect;
rect.x = 0;
rect.y = 0;
rect.width = cx;
rect.height = cy;
m_ClientHandler->GetBrowser()->GetHost()->WasResized();
}
}
```
7. 在主框架中添加CEF3窗口
在MFC应用程序的主框架类中,添加以下代码段:
```
CRect rect;
GetClientRect(&rect);
CefView* pView = new CefView;
pView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE, rect, this, 0);
```
现在,您已经成功地将CEF3集成到MFC多文档视图应用程序中。运行应用程序,您将看到嵌入的CEF3浏览器窗口显示了百度页面。
阅读全文