博客日历
2024年11月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
存档
2024年03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
LibCef的使用3-从最简单的项目开始
先创建一个基于对话框的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的使用2-创建项目
下一篇: LibCef的使用4-窗口大小自适应
分类:Win32/C++ 查看次数:636 发布时间:2020/5/3 7:53:09