先创建一个基于对话框的MFC程序,HelloCef

像上个示例一样组织项目的文件和目录。


基于Cef的程序是多进程模式的应用程序。主进程和子进程可以是独立的可执行程序,也可以共用一个可执行程序。本文采用共用一个可执行程序的形式。

一、定义空白的MyCefApp类和MyCefClient类

#include <include/cef_app.h>
class MyCefApp : public CefApp
{
private:
     // 实现引用计数
    IMPLEMENT_REFCOUNTING(MyCefApp);
};
 
#include <include/cef_client.h>
class MyCefClient : public CefClient
{
public:
    IMPLEMENT_REFCOUNTING(MyCefClient);
};

二、修改MFC程序的APP类

在APP类的头文件中:

public:
	CefMainArgs m_cefMainArgs;
	CefRefPtr<MyCefApp> m_cefApp;

在InitInstance()中:

	m_cefMainArgs = CefMainArgs(m_hInstance);
	m_cefApp = new MyCefApp();

	// CefExecuteProcess有点类似linux的fork函数
	// 对于子进程,程序会阻塞在CefExecuteProcess中。
	void* sandbox_info = NULL;
	int exit_code = CefExecuteProcess(m_cefMainArgs, m_cefApp.get(), sandbox_info);
	if (exit_code >= 0) {
		return exit_code;
	}

	CefSettings settings;
	settings.no_sandbox = true;
	settings.multi_threaded_message_loop = true;

	CefInitialize(m_cefMainArgs, settings, m_cefApp.get(), sandbox_info);

在ExitInstance中:

CefShutdown();


三、修改MFC程序的Dlg类

在Dlg类的头文件中:

CefRefPtr<MyCefClient> handler;

在OnInitDialog() 中:

    handler = new MyCefClient();
 
    RECT rc;
    GetClientRect(&rc);
    CefWindowInfo winInfo;
    winInfo.SetAsChild(m_hWnd, rc);
 
    CefBrowserSettings browserSettings;
    CefBrowserHost::CreateBrowser(winInfo, handler, 
    std::wstring(L"http://html5test.com/").c_str(), browserSettings, NULL, NULL);

这样,我们就实现了一个最简单的基于LibCef的应用程序。

特别需要理解的地方是CefExecuteProcess函数。这个函数之前不要有业务逻辑代码(因为子进程仅用于CEF)。


LibCef的使用-参考链接

https://www.cnblogs.com/MakeView660/p/12175857.html

https://github.com/fanfeilong/cefutil

https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage.md

https://blog.csdn.net/luofeixiongsix/article/details/80352969

https://www.jianshu.com/p/5f8517c186ed

https://blog.csdn.net/blackwoodcliff/article/details/74276848

https://www.cnblogs.com/wlreg/p/4595248.html

http://www.niuguwen.cn/blog/21344.html

https://www.itzhi365.com/tech-goods/tech-goods-25.html

https://blog.csdn.net/blackwoodcliff/article/details/74276848

https://www.cnblogs.com/wainiwann/p/11014963.html

https://blog.csdn.net/cair2/article/details/97149106?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1

https://blog.csdn.net/wangshubo1989/article/category/6004479

https://www.cnblogs.com/chechen/p/6104943.html

https://www.cnblogs.com/bclshuai/category/1745890.html

https://blog.csdn.net/u012814856/article/details/76595871

https://blog.csdn.net/shuilan0066/article/details/83898013



本文链接地址: LibCef的使用3-从最简单的项目开始
https://blog.qingfengju.com/index.asp?id=430

上一篇: LibCef的使用2-创建项目
下一篇: LibCef的使用4-窗口大小自适应

分类:Win32/C++ 查看次数:636 发布时间:2020/5/3 7:53:09