CEF使用的几个注意点

2023-11-09

转自http://www.cnblogs.com/gongxijun/p/4857977.html    

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.如何自定义的....

编程是一种快乐,享受代码带给我的乐趣!!!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CEF使用的几个注意点 的相关文章

  • 将运算符 << 添加到 std::vector

    我想添加operator lt lt to std vector
  • C# 方法重载决策不选择具体的泛型覆盖

    这个完整的 C 程序说明了这个问题 public abstract class Executor
  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • 现代 C++ 编译器是否能够在某些情况下避免调用 const 函数两次?

    例如 如果我有以下代码 class SomeDataProcessor public bool calc const SomeData d1 const SomeData d2 const private Some non mutable
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2

随机推荐

  • 蓝桥杯C/C++省赛:买不到的数目

    目录 题目描述 思路分析 AC代码 方法一 AC代码 方法二 题目描述 小明开了一家糖果店 他别出心裁 把水果糖包成4颗一包和7颗一包的两种 糖果不能拆包卖 小朋友来买糖的时候 他就用这两种包装来组合 当然有些糖果数目是无法组合出来的 比如
  • 100套基于Java+SSM的毕业设计项目实战(附源码+论文+演示视频)

    大家好 我是职场程序猿 感谢您阅读本文 欢迎一键三连哦 今天给大家分享100 基于Java SSM的毕业设计 这些项目都经过精心挑选 涵盖了不同的实战主题和用例 可做毕业设计和课程设计参考 除了源码 对于大部分项目实现的功能都有相应的介绍
  • Qt项目---简单的计算器

    在这篇技术博客中 我们将介绍如何使用Qt框架实现一个简单的计算器应用 我们将使用C 编程语言和Qt的图形用户界面库来开发这个应用 并展示如何实现基本的算术操作 项目设置 首先 我们需要在Qt Creator中创建一个新的Qt Widgets
  • 关于虚函数、父类指针、父类子类内存访问的一道很有意思的笔试题

    1 题目 1 1 原题 include
  • 你知道每片晶圆能卖多少钱吗?-道合顺大数据infinigo

    你知道 卖一颗芯片究竟能赚多少钱吗 根据市场调研机构IC Insights发布的最新数据显示 在7nm工艺需求强劲 以及5nm工艺量产的推动下 2020年台积电每片晶圆营收达到1634美元 约合人民币10568元 单颗芯片营收居全球半导体产
  • Microsoft Jet SQL for Access 2000

    该系列的文章解释了什么是Microsoft Jet SQL 并说明了它如何在Access 2000的应用程序中使用 本文是基础 中级和高级三篇中的第二篇 这些文章循序渐进的说明了使用Jet SQL的语法和一些方法 并示范了对于Access
  • 程序分析

    程序分析 百科名片 程序分析是指对 计算机程序行为进行自动分析的过程 主要包括静态分析和动态分析两种策略 目录 简介 什么是程序分析 程序分析的目的 程序分析的种类及图表 程序分析的记录符号 程序分析的技巧 程序分析的实施及步骤 程序分析的
  • 后渗透中提权的必要性和思路

    很多同学常常问起 渗透测试中获取服务器权限后一定要提权吗 为什么要提权呢 故有此文 提权的必要性 在一场完整的渗透测试中 如果已经获取服务器权限 此时就进入后渗透阶段了 渗透的最终目的是获取服务器的最高权限 即windows操作系统中管理员
  • 牛客网_剑指Offer_Python实现_更新中

    剑指Offer编程题汇总 第1题 二维数组中的查找 第2题 替换空格 第3题 从尾到头打印链表 第4题 重建二叉树 第5题 用两个栈实现队列 第6题 旋转数组的最小数字 第7题 斐波那契数列 第8题 跳台阶 第9题 变态跳台阶 第10题 矩
  • 计算圆周率

    根据用户输入计算圆周率 import math import random def type judge pi type 接收一个字符串为参数 根据参数调用相应函数计算圆周率 if pi type 割圆法 times int input 输
  • StringBuffer 和StringBuilder的应用场景

    StringBuffer线程安全 StringBuilder线程不安全 StringBuffer比StringBuilder慢 网络上有很多的文章有说到他们两个的区别 以及应用场景 这里说下个人感悟 StringBuffer更多会和修改全局
  • 伯努利分布、二项分布、泊松分布、指数分布、Gamma分布的联系

    伯努利分布 0 1分布 伯努利分布是二项分布在N 1时的特例 随机变量为取值为0或者1 二项分布 N次重复且独立的伯努利实验 随机变量为在N次实验中出现某种情况 概率为p 的次数K 泊松分布 二项分布的极限形式 N趋于无穷大 P趋于0 描述
  • 工具:语雀导出MarkDown文档后图片修复

    微信公众号 乌鸦安全 扫取二维码获取更多信息 01 描述 在比较早的时候 我比较纠结记笔记的产品 最初的时候是在使用Typora在本地写Markdown文档 后来试用了一下印象笔记 但是它的缺点就是贵 而且上传的流量很少 在之后氪金的一刹那
  • 从一张表数据选出,插入另外一张表

    在CSDN搜到一篇博文原文如下 今天在做数据库操作的时候 有一个需求是将A表中的前500000条数据查出来 然后插入到表B中 表A与表B具有同样的字段类型 数据库为Oracle 10g 数据库管理工具用的PL SQL 由于数据库不是特别的熟
  • vue中使用WebSocket(ui用的ant design)

    那些原理 和什么情况下时候适合用WebSocket我这就不多说 直接上代码 哈哈 拷贝即用
  • fast虚拟服务器地址,fast虚拟服务器地址

    fast虚拟服务器地址 内容精选 换一换 参数说明如下 VPC网段 VPC的地址范围 根据规划的子网信息 配置VPC的地址范围 子网网段 VPC中默认子网的地址范围 需要在VPC的子网地址范围内 根据规划的信息进行配置 DNS服务器地址 默
  • 多个Livox雷达点云合成及使用ROS发布

    项目场景 因为单个Livox avia的FOV只有70 无法覆盖车前方的所有范围 所以用了三个Livox avia以实现180 前方位覆盖 但由于三个雷达均是独自采集 所以需要对每个雷达采集的各帧点云进行合并 用于建图 以下工作均建立于已经
  • [C进阶] 数据在内存中的存储——整形篇

    前言 学习一门语言就像是了解一个陌生人 首先我们要做的是从外貌和举止来宏观上考察一个人的特点 然后逐渐的对其进行深入了解 最终变得知根知底 畅所欲言 本章我们对数据存储的探讨其实就是在对C语言进行深入了解 因为只有知根知底才能畅所欲言 本章
  • 路由器选择使用指南这三Openwrt

    一 关于Openwrt 嗯 这个和华硕没什么关系 虽然也是亲戚 同样源于linux 所以linux最牛 关于这个固件可以说的就多了 前面padavan比较水 这个多写点 Openwrt有很多大神小神毛神小白在为它编译固件 说到这个就不得不提
  • CEF使用的几个注意点

    转自http www cnblogs com gongxijun p 4857977 html CEF为chrome浏览器的切入其他浏览器中的轻量级框架 开发的客户端的时候 这是作为界面显示的首先 可以增强客户的易变性 可塑性 在开发的过程