CEF3较为权威的中文文档、教程的GitHub地址

以下是详细的cef3嵌入mfc多文档视图的教程: 1. 创建MFC多文档视图应用程序。 在Visual Studio中创建一个MFC应用程序,选择MFC多文档应用程序作为应用程序类型,接着按照向导的提示完成应用程序的创建。 2. 添加CEF3控件。 在应用程序的主框架窗口中添加一个CEF3控件,可以使用MFC自带的WebBrowser控件,也可以使用第三方的CEF3控件。 使用MFC自带的WebBrowser控件,可以在主框架窗口的OnInitDialog函数中添加以下代码: ``` CRect rect; GetClientRect(&rect); m_webBrowser.Create(NULL, NULL, WS_VISIBLE | WS_CHILD, rect, this, IDC_EXPLORER); m_webBrowser.Navigate(_T("about:blank"), NULL, NULL, NULL, NULL); ``` 使用第三方的CEF3控件,可以在主框架窗口的OnInitDialog函数中添加以下代码: ``` CRect rect; GetClientRect(&rect); m_cef3.Create(rect, this, 0); m_cef3.InitBrowser("http://www.baidu.com"); ``` 其中,m_webBrowser和m_cef3分别是WebBrowser控件和CEF3控件的成员变量。 3. 创建文档类。 创建一个派生自CDocument的文档类,在其中添加CEF3的初始化和销毁代码。可以在文档类的构造函数中添加以下代码来初始化CEF3: ``` CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine(); CefRefPtr<CefApp> app = new CCefApp; CefMainArgs args(::GetModuleHandle(NULL)); CefExecuteProcess(args, app.get(), NULL); CefSettings settings; CefInitialize(args, settings, app.get(), NULL); ``` 在文档类的析构函数中添加以下代码来销毁CEF3: ``` CefShutdown(); ``` 4. 创建视图类。 创建一个派生自CView的视图类,在其中添加CEF3的初始化和销毁代码。可以在视图类的构造函数中添加以下代码来初始化CEF3: ``` CefRefPtr<CefRequestContext> request_context = CefRequestContext::CreateContext(CefRequestContextSettings(), NULL); CefRefPtr<CefBrowser> browser = CefBrowserHost::CreateBrowserSync(NULL, request_context, this, CefBrowserSettings(), NULL, NULL); CefWindowHandle hwnd = browser->GetHost()->GetWindowHandle(); ::SetParent(hwnd, GetSafeHwnd()); ``` 在视图类的析构函数中添加以下代码来销毁CEF3: ``` CefRefPtr<CefBrowserHost> host = browser->GetHost(); host->CloseBrowser(true); browser = NULL; ``` 其中,browser是CEF3的浏览器对象。 5. 添加消息处理函数和事件处理函数。 在视图类中添加CEF3控件的消息处理函数和事件处理函数。 消息处理函数的代码如下: ``` void CMyView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); if (browser && browser->GetHost()) { CefRect rect(0, 0, cx, cy); browser->GetHost()->WasResized(); browser->GetHost()->SetFocus(true); } } ``` 事件处理函数的代码如下: ``` bool CMyView::OnProcessMessageReceived(CefRefPtr<CefBrowser> browser, CefProcessId source_process, CefRefPtr<CefProcessMessage> message) { if (message->GetName() == "custom_message") { // 处理自定义消息 return true; } return false; } ``` 6. 注册文档类型。 在应用程序的主框架窗口中,使用相应的文档类和视图类注册一个新的文档类型。可以在主框架窗口的InitInstance函数中添加以下代码来注册文档类型: ``` CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate(IDR_MFCApplicationTYPE, RUNTIME_CLASS(CMFCApplicationDoc), RUNTIME_CLASS(CChildFrame), // 自定义框架窗口类 RUNTIME_CLASS(CMFCApplicationView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); ``` 其中,CChildFrame是自定义的框架窗口类,CMFCApplicationView是自定义的视图类。 7. 创建文档。 在应用程序的主框架窗口中,使用相应的文档类和视图类创建一个新的文档。可以在主框架窗口的OnFileNew函数中添加以下代码来创建文档: ``` CDocument* pDoc = NULL; CMultiDocTemplate* pTemplate = GetDocTemplate(RUNTIME_CLASS(CMFCApplicationDoc)); if (pTemplate != NULL) pDoc = pTemplate->CreateNewDocument(); if (pDoc != NULL) { AddDocument(pDoc); pDoc->SetTitle(_T("New Document")); pDoc->OnNewDocument(); CFrameWnd* pFrame = pTemplate->CreateNewFrame(pDoc, NULL); if (pFrame != NULL) { pTemplate->InitialUpdateFrame(pFrame, pDoc); } } ``` 其中,CMFCApplicationDoc是自定义的文档类。 8. 显示CEF3控件。 在新文档的视图中,初始化并显示CEF3控件。可以在视图类的OnInitialUpdate函数中添加以下代码来显示CEF3控件: ``` CRect rect; GetClientRect(&rect); browser->GetHost()->SetSize(PET_VIEW, rect.Width(), rect.Height()); browser->GetHost()->WasResized(); browser->GetHost()->SetFocus(true); ``` 其中,browser是CEF3的浏览器对象。 以上就是cef3嵌入mfc多文档视图的详细教程,希望能够对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值