一步步CEF(4)之修改窗口大小

【CEF】《CEF 桌面软件开发实战》笔记-Chapter3-窗口控制 阅读详情
AI摘要

本文介绍如何在使用CEF框架时精确控制窗口尺寸,包括直接调整窗口大小、修改离屏渲染尺寸以及同步浏览器窗口大小的方法。

在创建窗口的时候,可以保存下窗口的指针。

 

scoped_refptr<RootWindow> rootWin = context->GetRootWindowManager()->CreateRootWindow(window_config);

这个窗口要修改尺寸,说简单也很简单,只需要

rootWin->SetBounds(0, 0, ww, hh);

不过这样设置不算准确得到渲染的面积,对于离屏(OSR)的尺寸设置,需要修改osr_window_win.cc下的函数GetViewRect

不过GetViewRect是提供给窗口的,所以要通过另外一个自定义的函数传递过来setRenderViewSize,并保持下来,然后用getRenderViewSize读出来。

这样可以得到固定的尺寸的bitmap,但是如果要不断更新尺寸呢?

如果只是改变渲染的尺寸,但是浏览器窗口怎么跟随变化呢?对WM_SIZE下处理。这个对窗口的层次而已,不是本文关注的,对CEF层面的话,也很简单

	CefRefPtr<CefBrowser> browser = rootWin->GetBrowser();
	if (browser.get())
	{
		HWND hwnd_ = browser->GetHost()->GetWindowHandle();
		if (hwnd_)
		{
			::MoveWindow(hwnd_, 0, 0, ww, hh, TRUE);
		}
	}

这个可以让创建的窗口与浏览器的窗口跟随尺寸。这段代码具体要放哪里,那不是我关注的。

Chromium周边了解:content_shell和cef Chromium周边了解:content_shell和cef 简介 众所周知chromium项目无比巨大,想去快速的了解,调试并添加自己想要的功能,先初步的了解一下content_shell 和 cef 是个不错的选择! 1.从content shell开始多数人首次接触chromium都感觉这个项目太过于庞大,总是有无从下手的感脚; 如果我们想抛开它原有的界面单纯的去了解一下它怎么 阅读详情

相关推荐

虚幻引擎4.26集成CEF实现WebView:从原理到实战的完整指南

在现代游戏开发与数字孪生应用中,内嵌网页以展示动态内容(如数据看板、交互式UI)是常见需求。其核心原理是通过集成成熟的浏览器渲染引擎(如Chromium Embedded Framework),在3D引擎内部创建一个可交互的网页视图组件。这项技术的关键价值在于,它允许开发者利用成熟的Web技术栈(HTML5、CSS3、JavaScript)快速构建复杂的UI界面,并实现与游戏逻辑的深度数据交互,从而极大地扩展了应用的功能边界与开发效率。在虚幻引擎(UE4)中,这通常通过社区或第三方提供的WebView插件实

weixin_30645617的博客 433

[WTL/ATL]_[初级]_[无边框窗口拉伸]

场景 在开发无边框的窗口时,没有了系统自带的边框后,也需要我们自己对界面进行编码拉伸. 如何实现? 如果想保留系统自带的边框,不想自己编码实现界面拉伸如何做? 说明 如果需要自带系统的边框,那么在创建窗口时加上WS_SIZEBOX if(wndMain.CreateEx(NULL,NULL,WS_SIZEBOX|WS_CLIPCHILDREN | WS_CLIPSIBLINGS|W...

小白 1437

解决CefSharp在Win10调整屏幕缩放后的网页显示故障

故障: 解决: 方案一 使用CefSharp自带的方法: 找到Cef.Initialize(setting);语句,在其下添加Cef.EnableHighDPISupport(); 方案二 使用app.manifest文件 添加: 项目→属性→安全性→启用ClickOnce安全设置,挑勾选中再取消。Properties下文件就生产了 修改: 1、取消<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /&gt

dgnankai的专栏 2458

duilib 修改窗口大小 偶然失败情况

现象: 动态设置窗口最小大小,动态改变窗口大小位置,发现偶然会有不成功现象。 经测试,下面操作,会导致修改不成功 将窗口最大化 , 隐藏 , 然后修改窗口大小 , 最后显示窗口, 会发现窗口大小没变。 解决: 估计,此时,窗口处于最大化状态,因此是不支持修改窗口大小的, 知道原因就好解决了。 再隐藏窗口 或重新设置大小时,先还原下窗口 具体如下: 重新设置大小时:...

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 1590

CEF 实现放大缩小视图功能

0键,对应的值是0x16 ,也就是十进制48, 在我的机子上 VK_0并没有定义,所以直接中这个值进行判断。一个是NUM_LOCK 锁住时, VK_NUMPAD0 代表按了小键盘的0。一个是NUM_LOCK 未锁住时,VK_INSERT 代表按了小键盘0。大键盘上的 - 的虚拟键 VK_OEM_MINUS。2)、大键盘上的 + 虚拟键是 VK_OEM_PLUS。同理,小键盘上的 - 的虚拟键 VK_SUBTRACT。需要注意的是,调用的时候,发现始终返回0。.........

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 1429

使用CEF3访问和修改HTML DOM元素

通过使用CefFrame类提供的ExecuteJavaScript方法,我们可以执行JavaScript代码来获取和修改DOM元素的属性值。在示例代码中,我们通过getElementById方法获取了一个具有"id"为"myElement"的DOM元素,并将其innerHTML属性修改为"Hello, CEF3!在函数中,我们使用ExecuteJavaScript方法执行了一段JavaScript代码,来获取并修改DOM元素。要访问和修改HTML DOM元素,我们需要使用CEF3提供的CefFrame类。

NsbiCs的博客 678

CEF的那点事 -- CEF介绍

CEF是Chromium Embedded Framework的简称,是Google公司开发的一个浏览器内核框架,以开源库的方式提供,可以内嵌到第三方程序中。 CEF老版本使用的WebKit内核,从2013年开始,CEF已经使用Google自主研发的Blink内核(网上也有人说,Blink是基于Webkit修改而来,这个无从考证)。 官网 CEF的官网是:https://bitbucket.org/chromiumembedded/cef/wiki/Home,国内用户访问可能不会太顺利。 版本 CEF经历了

while(1) { smile(); } 5867

CEF3 SDK在VS2005中编译实践及Flash支持

在当今的网络世界中,浏览器作为获取信息的重要渠道,其重要性不言而喻。然而,传统的浏览器因其功能和扩展性受限,已经无法完全满足企业级应用和复杂交互场景的需求。这时,Chromium Embedded Framework(CEF)作为一种开源的框架应运而生,它将Chromium浏览器引擎嵌入到应用程序中,从而提供了一个强大而灵活的方式来构建基于Web的应用。CEF3是CEF框架的一个重要版本,它基于Chromium项目,并引入了大量新功能和改进,以此来提升开发者在集成Web内容时的性能和体验。

weixin_42573757的博客 340

cef修改html,CEF 设置页面缩放级别

现在很多高分屏在笔记本和家用市场逐步扩大,普通应用大小在一个 2K 或者 4K 屏幕下就像一个便利签一样贴在屏幕上面,看着很小。于是操作系统提供了对分辨率进行缩放的功能,比如我可以设置当前分辨率放大到 125%,这样就可以让字体或者窗口看着更大一些。同样基于 CEF 制作的客户端程序也会随之放大到 125%,但是内嵌的网页呢?当然也需要根据系统设置放大缩小,CEF 给我们提供了 SetZoomLe...

weixin_32380307的博客 2317

在MFC中使用使用CEF3

老外写的,继承回调比较完整,入门demo参考..........................................................................................................................................................................................................................................

SAP PP CSAP_MAT_BOM_MAINTAIN ECN 增加组件

SAP PP CSAP_MAT_BOM_MAINTAIN ECN 增加组件。

GAVIN 408

CEF4Delphi项目中FMX界面在高DPI下的字体模糊问题分析与解决方案

在使用CEF4Delphi项目的FMXTabbedOSRBrowser示例时,当Windows 10系统设置为150% DPI缩放比例的情况下,界面字体在窗口大小变化时会出现明显的模糊现象。类似问题也出现在部分Windows 7系统环境中,即使进行了相关设置调整。 ## 技术背景分析 CEF4Delphi是一个将Chromium Embedded Framework(CEF)封装为Delphi

gitblog_07794的博客 644

静态分析工具COBOT与Testbed对比

Testbed为规则检查工具的代表,市场占有量非常大,但随着时间的推移,大家从规则匹配转向了用静态分析工具检查Bug,所以规则检查型工具占有量比开始时候已经减少,但仍有一些比较落后的单位还在继续采购此类工具。3、通过对开源工程的测试,进行误漏报率的对比,发现COBOT(库博)的误漏报率相比Testbed较低,因COBOT主打国内市场,在众多军工单位进行大量试用及使用,吸取了众多单位的意见和建议,更加符合国内军工单位的使用习惯及测试要求。4、此外库博在功能上还可以进行计划任务,检测队列,检测并发的功能支持。

chengoodflower的博客 2055

从崩溃到稳定:CEF4Delphi中JavaScript Alert导致Alloy样式异常的深度解决方案

在基于CEF4Delphi开发的桌面应用中,开发者经常会遇到一个棘手问题:当网页中触发`JavaScript alert()`弹窗后,应用的Alloy样式框架(一种常见的Delphi/Lazarus UI组件库)会出现布局错乱、控件样式丢失甚至界面卡死的现象。这种跨上下文的UI冲突在Windows平台尤为突出,严重影响用户体验。 ### 1.1 典型症状表现 - **视觉异常**:弹窗关闭后,主

gitblog_07909的博客 467

ETL数据集成案例

一个典型的ETL数据集成案例是将多个来源的数据合并成一个数据集。假设有一个公司,该公司使用一些不同的系统来存储不同部门的数据,例如销售数据存储在一个CRM系统中,财务数据存储在一个ERP系统中,人力资源数据存储在一个HR系统中。为了更好地进行报告和分析,该公司决定将所有这些数据集成到一个数据仓库中。以下是实现这一目标的ETL过程的步骤:提取(Extract):首先,需要从每个系统中提取所需的数据。每个系统可能有不同的数据格式和结构,因此需要编写不同的提取程序或查询来提取数据。

runqu的博客 948

【天气雷达】双偏振产品-差分反射率ZDR详解

双偏振产品-差分反射率ZDR详解。

珞瑜的博客 5407

CEF 中的那些坑

CEF (Chromium Embedded Framework) 的大名也听说很久了,最近因为客户的需求,简单地研究了一下。结果遇到了一个接一个的坑,且慢慢道来。比之前用QtWebkit的坑还要多和深。 其实,这次的程序很简单,主要是构建一个最前端显示的无边框的浏览器窗口,先从远端获取窗口大小和key,然后播放链接中的视频。从CEF1代码包里自带的cefclient下手,在win32下就进行修...

weixin_30849591的博客 1318

使用HART Server PC软件进行HART设备的组态、调试和分析的完整指南

HART协议是一种用于工业自动化中的双向通信协议,能够在4-20mA模拟信号的基础上叠加数字信号,从而实现设备的远程监控和管理。HART协议兼具模拟和数字通信的优点,被广泛应用于过程控制系统中。设备组态:通过软件可以对HART设备进行组态,配置设备参数。设备调试:支持设备的在线调试和故障诊断,方便快速解决问题。数据分析:提供设备运行数据的实时监控和历史数据分析功能。报表生成:支持生成各类报表,便于数据记录和管理。

qq_38334677的博客 2468

【java】本地客户端内嵌浏览器2 - chrome/chromium/cef/jcef

java客户端内嵌谷歌chrome浏览器,chromium开源项目CEF的java语言移植版jcef项目,给swing项目搭建spring框架,spring注解开发,spring启动,spring多线程异步开发,@Async的使用,内嵌浏览器防卡顿,打包带dll的Java项目,jar包转exe,exe4j使用Regular mode模式

苍狼的博客 1万+

Lammps实现单轴压缩-应力应变曲线以及弹性模量计算

Lammps实现单轴压缩-应力应变曲线以及弹性模量计算

Rockyoung 1万+

Microsoft Dynamics 365软件二次开发:Dynamics365部署与版本控制策略

在Microsoft Dynamics 365中,自定义实体允许开发者扩展系统以满足特定业务需求。自定义实体可以包含字段、选项集、关系和其他属性,与标准实体类似,但完全由用户定义。1. 登录到Dynamics 365环境。2. 转到“解决方案”区域,选择“自定义”。3. 在“自定义”菜单中,选择“实体”。4. 点击“新建”,输入实体名称,例如“客户反馈”。5. 添加字段,如“反馈类型”、“反馈日期”、“描述”等。6. 设置主键和唯一标识符。7. 定义关系,如与“客户”实体的关联。

kkchenjj的博客 2208

嵌入CEF到MFC程序

公司项目中一直存在着一个CHtmlView模块来显示URL,但是随着web页面的更新(加入HTML5 and 其它一些比较新的技术)越来越发现使用CHtmlView已经无法满足目前的需求。开始还是试着去修改一些东西去满足当前需要,不过好景不长终于有一天CHtmlView连我们目前的web页面都打不开了,于是决定采用Chrome来作为浏览器引擎。 嵌入到MFC 使用CEF 首先,需要下载CEF

hbtxgk的专栏 1570

【Claude】组织级认证限制报错已解决(4 种)

报错被禁用的是什么谁能解除应急方案整个 Console 组织Anthropic 支持换账户 / 订阅凭证API key 认证方式你的组织管理员用订阅/login订阅 OAuth 登录你的组织管理员用 API keyRoutines 功能你的组织所有者手动计划任务替代共同排查模式/status确认当前凭证;检查环境变量;看清报错消息里命名的是什么(key?组织访问?),对症清除;管理员层面的限制,找管理员解锁。

博客 1万+

CEF编译后,如何快速上手运行和修改cefsimple/cefclient示例程序?

本文详细介绍了CEF(Chromium Embedded Framework)编译后如何快速上手运行和修改cefsimple/cefclient示例程序。从环境准备、示例程序定位到高级定制开发,提供了完整的实战指南,帮助开发者快速掌握CEF开发技巧,包括修改默认URL、自定义窗口样式、禁用右键菜单等常见场景的解决方案。

weixin_30416871的博客 309

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

UE4 WebBrowser插件双向通信实战:从CEF原理到动态图表交互

在现代应用开发中,进程间通信(IPC)是实现不同技术栈模块高效协作的核心机制。其原理在于通过定义清晰的通信协议,在隔离的进程或环境间安全地交换数据与指令。这项技术的价值在于能够打破技术壁垒,实现如C++与JavaScript等异构系统间的深度交互,广泛应用于游戏内嵌UI、实时数据可视化、混合应用开发等场景。以UE4引擎为例,其WebBrowser插件基于Chromium Embedded Framework(CEF)内核,为游戏世界与网页内容搭建了天然的通信桥梁。通过深入理解CEF的绑定机制与异步回调原理,

weixin_30570101的博客 381

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 一步步CEF(3)之JavaScript与C++互动
下一篇: 关于ttc(Font Collection File)转ttf(True Type File)和N个ttf合并成ttc的问题
狼风123
博客等级 码龄19年 1058粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值