分享个Duilib中基于wke的浏览器控件

本文介绍了如何在Duilib中集成wke浏览器控件,wke是基于Chrome的轻量级库,大小仅10M,无需额外扩展库。通过示例代码展示了控件的使用和配置,强调其方便的JS与C++交互,并指出其在功能上的限制,如缺失部分事件处理。此外,还提及了类似选择EaWebkit作为更小体积的替代方案。
摘要由CSDN通过智能技术生成

概述

wke是基于谷歌chrome浏览器源代码的裁剪版本,大小仅仅只有10M左右,无需依赖其他的扩展库(跟CEF的一大堆大约40M的DLL来比简直爽呆了),就可以在本地使用谷歌内核快速加载网页。网上也有基于wke在Duilib 上扩展的控件代码,其实wke头文件挺清楚的了,接口一目了然,特别是JS与C++交互的函数更是容易看懂,也没什么难的,你也可以做到的。

代码

毕竟是裁剪库,有的功能还是没有接口来处理的(比如网页加载前、页面跳转、菜单消息……),头文件代码:

#ifndef __UIWKEWEBKIT_H_
#define __UIWKEWEBKIT_H_
#pragma once
#include "wke.h"
#include <string>
using std::wstring;

namespace DuiLib
{
	///
	//网页加载状态改变的回调
	class CWkeWebkitLoadCallback
	{
	public:
		virtual void	OnLoadFailed()=0;
		virtual void	OnLoadComplete()=0;
		virtual void	OnDocumentReady()=0;
	};
	///
	//网页标题、地址改变的回调
	class CWkeWebkitClientCallback
	{
	public:
		virtual void	OnTitleChange(const CDuiString& strTitle)=0;
		virtual void	OnUrlChange(const CDuiString& strUrl)=0;
	};

	class CWkeWebkitUI :
		public CControlUI,
		public wkeBufHandler
	{
	public:
		CWkeWebkitUI(void);
		~CWkeWebkitUI(void);
		virtual void	onBufUpdated (const HDC hdc,int x, int y, int cx, int cy);
		virtual LPCTSTR	GetClass()const;
		virtual LPVOID	GetInterface(LPCTSTR pstrName);
		virtual void	DoEvent(TEventUI& event);
		virtual void	DoPaint(HDC hDC, const RECT& rcPaint);
		virtual void	SetPos(RECT rc);
		virtual void	DoInit();
		virtual void	SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);
		//
		const	wstring& GetUrl()const ;
		bool	CanGoBack() const;
		bool	GoBack();
		bool	CanGoForward() const;
		bool	GoForward();
		void	StopLoad();
		void	Refresh();
		wkeWebView	GetWebView();
		void	SetLoadCallback(CWkeWebkitLoadCallback* pCallback);
		CWkeWebkitLoadCallback* GetLoadCallback();
		void	Navigate(LPCTSTR lpUrl);
		void	LoadFile(LPCTSTR lpFile);
		void	LoadHtml(LPCTSTR lpHtml);
	protected:
		void	StartCheckThread();
		void	StopCheckThread();
		static	void OnTitleChange(const struct _wkeClientHandler* clientHandler, const wkeString title);
		static  void OnUrlChange(const struct _wkeClientHandler* clientHandler, const wkeString url);
	private:
		static int	m_bWebkitCount;
		HANDLE		m_hCheckThread;
		wstring		m_strUrl;
		wkeWebView	m_pWebView;
		wkeClientHandler	m_ClientHandler;
		CWkeWebkitLoadCallback*		m_pLoadCallback;
		CWkeWebkitClientCa
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值