使用Libcef+Duilib创建自己的Chrome内核浏览器

浏览器代码已开源:欢迎收藏 https://github.com/JelinYao/MyChrome

前言:

编译Chrome开源代码是一件很恐怖的事情,代码庞大,还需要各种工具配合。在windows上快速开发chrome内核网页程序,Libcef是一个很好的选择。最近趁空闲时间,写了一个简单的浏览器,很多功能都没有完善,不知道以后还会不会继续写了,PC端确实是萎了。

1、Libcef 的使用

在前面的几篇文章中大概介绍了下Libcef的使用,很多时候我们都会遇到各种问题,建议去看看它的接口函数声明,里面的注释写的非常清楚。

libCEF中C++与JavaScript的交互调

Windows上使用CEF嵌入基于chrome内核浏览器小例

2、大概的要点

程序运行截图

首先需要解决的是浏览器的Tab控件,扩展Duilib控件,每一个Tab控件就是一个容器里面存放着一系列Item,根据Item的个数和Tab的尺寸来计算每一个Item 节点的宽度。

对于单个节点Item控件,里面又有一个子Button控件,也就是关闭按钮。对于这个Item的消息进行处理,包括选中、双击、关闭,把这些消息都转发到父控件Tab中去处理。Tab控件同一管理这些控件的哪一个是选中状态。

然后是Libcef控件的创建,Tab中点击Add按钮后,需要创建网页控件并加载到当前窗口中去。整个父窗口在大小发生变化时,又要通知里面所有的Libcef子窗口随之变化。

然后就是关闭时,要让所有的Libcef子进程都能正常退出,就必须按照Libef文档说的那样,在退出时调用CefQuitMessageLoop()。

3、部分源代码

Duilib扩展Tab控件

 

#pragma once
#include "ScrollTabUI.h"


class CScrollOptionUI :
	public CContainerUI
{
public:
	CScrollOptionUI(void);
	~CScrollOptionUI(void);
	void	SetParent(CScrollTabUI* pTab)	{ m_pParent = pTab; }
protected:
	virtual void Init();
	virtual void PaintText(HDC hDC);
	virtual void SetPos(RECT rc);
	virtual void DoEvent(TEventUI& event);
	bool	OnBtnClose(void* pParam);
private:
	CButtonUI*		m_pBtnExit;
	CScrollTabUI*	m_pParent;
};

 

#include "StdAfx.h"
#include "ScrollOptionUI.h"


#define BTN_CLOSE_WIDTH		14
#define BTN_CLOSE_HEIGHT	14

CScrollOptionUI::CScrollOptionUI(void)
	: m_pBtnExit(NULL)
	, m_pParent(NULL)
{
}


CScrollOptionUI::~CScrollOptionUI(void)
{
}

void CScrollOptionUI::Init()
{
	m_pBtnExit = new CButtonUI;
	CDuiString strAttr;
	strAttr
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值