CEF使用的几个注意点
时间:2022-05-05
本文章向大家介绍CEF使用的几个注意点,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
CEF为chrome浏览器的切入其他浏览器中的轻量级框架。 开发的客户端的时候,这是作为界面显示的首先,可以增强客户的易变性,可塑性。
在开发的过程中(侧重于C,C++解决),遇到的几个问题,以及自己看源码和整理出的KO思路:
1. cef如何禁用右键属性:
手动写一个Cclient来继承 CefMenuHandler这个抽象类,然对其下面的纯虚函数进行重写
1 virtual bool OnBeforeMenu(CefRefPtr<CefBrowser> browser, const CefMenuInfo& menuInfo) { return true; }
2 virtual CefRefPtr<CefMenuHandler> GetMenuHandler() { return this; }
2.如何对浏览器进行定位或者说是画出来:
首先用此函数GetClientRect 获取客户区的矩形区域,rect 然后运用下面的函数,进行定位
CefSettings cSettings;
CefRefPtr<CefApp>spApp;
CefWindowInfo info;
RECT rect;
RECT rectnew;
CefBrowserSettings browserSettings;
1 CefSettingsTraits::init(&cSettings);
2 cSettings.multi_threaded_message_loop= true;
3 CefInitialize(cSettings, spApp);
4 GetClientRect(&rect);
5 rectnew=rect;
6 rectnew.top=rect.top+94;
7 rectnew.bottom=rect.bottom;
8 rectnew.left=rect.left;
9 rectnew.right=rect.right;
10 info.SetAsChild(GetSafeHwnd(),rectnew);
11
CefBrowser::CreateBrowser(info, static_cast<CefRefPtr<CefClient> >(client),
MainUrl.c_str(),browserSettings);
3. 如何对自定义操作进行cookie操作:
开启一个线程,来修改进程中cookie的值
1 CefRefPtr<CefCookieManager> manager = CefCookieManager::GetGlobalManager();
2 CefString(&cookie.name).FromASCII("PHPSESSID");
3 //SessinID+=+";client";
4 CefString(&cookie.value).FromASCII(SessinID.c_str());
5 CefString(&cookie.domain).FromASCII("203.195.192.24");
6 CefString(&cookie.path).FromASCII("/");
7
8 cookie.has_expires = true;
9 cookie.expires.year = 2200;
10 cookie.expires.month = 10;
11 cookie.expires.day_of_week = 5;
12 cookie.expires.day_of_month = 11;
13 CefPostTask(TID_IO, NewCefRunnableMethod(manager.get(), &CefCookieManager::SetCookie, CefString(MainUrl.c_str()), cookie));
4.对于网上困扰很多人的,Cef+MFC页面覆盖(页面不刷新现象),而不能显示的问题,摸索了好久,发现原来是cef和MFC中对话框中的刷新前后不一样造成的。
所以去研究了对话框的重绘之后,发现其实只需要,虚函数OnEraseBkgnd重写,改成这样之后,便不会出现页面覆盖,也不会出现闪烁的画面既视感!
.h部分
virtual BOOL OnEraseBkgnd(CDC* pDC);
.cpp部分
在映射部分手动加载:
ON_WM_ERASEBKGND()
//这部分用来解决页面覆盖问题,喵的终于解决啦!
BOOL MMenu::OnEraseBkgnd(CDC* pDC){
//return TRUE;
return FALSE;
}
4.如何自定义的....
- 真是热闹! Slade.com等多个域名被曝交易
- python编码问题之"encode"&"decode"
- python3编码问题终结者--还搞不懂你来找我
- Pycharm集成PyQt4并使用
- python遍历一个目录,输出所有文件名
- pyqt4实现tab界面切换
- 腾讯云Fintech云端系列论坛首站北京,揭秘如何全链路赋能互联网金融
- Flask入门笔记(一)
- 刷脸还是指纹识别,that's a question
- c#:使用using关键字自动释放资源未必一定就会有明显好处
- MongoDB 学习笔记(原创)
- Silverlight:ScorllViewer随Tab键自动跟随子控件的Focus滚动
- 老域名做新站如何能快速得上首页?
- Silverlight:分包下载及SEO优化方案
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 短视频APP开发,简单计时功能
- LeetCode | 94.二叉树的中序遍历
- Druid 的整合
- LeetCode | 104.二叉树的最大深度
- Flutter 目录结构和项目资源
- iOS音视频接入- TRTC互动直播
- 【一天一大 lee】查找常用字符 (难度:简单) - Day20201014
- 金九银十准备换场地?对标腾讯T3的Android高级工程师面试大纲及时雨来了
- 【一天一大 lee】两两交换链表中的节点 (难度:中等) - Day20201013
- 【一天一大 lee】二叉搜索树的最小绝对差 (难度:简单) - Day20201012
- 有奖互动 | 腾讯云开发者社区 3 周年庆,我过生日,送你们礼物 ~
- 【一天一大 lee】分割等和子集 (难度:中等) - Day20201011
- 【一天一大 lee】寻找两个正序数组的中位数 (难度:困难) - Day20201003
- 【一天一大 lee】颜色分类 (难度:中等) - Day20201007
- 【一天一大 lee】树中距离之和 (难度:困难) - Day20201006