【杂项】Windows 异形窗体改造 一、需求背景Windows 客户端需要支持非规则窗体的视觉效果。同时,需要保留窗口的缩放、鼠标穿透、跨屏拖放等交互效果。 二、技术点技术点1:异形窗体使用透明控件扩充主窗口四周,以达到不规则图形超出客户区而不被裁剪的目的。同时,能保证窗口不受因缩放造成的抖动或闪烁。 技术点2:鼠标穿透至桌面鼠标穿透可借助透明区域裁剪操作。其中,区域计算涉及布尔运算,图片掩码等图形学操作。 技术点3: 窗体缩放 窗 2024-09-17 Windows
【杂项】Aria2- 基础应用(持续更新) 1、Aria 基础设施Aria2 下载器Aria2 下载器支持多种 IPC 通信模式: JSON-RPC, XML-RPC。 IPC 机制基于 Aria2 提供的 RPC 机制, 我们选择了 xmlrpc 作为进程间通信方式。xmlrpc 开源库多种多样, 比如:libmaia, timxmlrpc。 libmaia: https://github.com/wiedi/libmaia一款为 Qt 2024-09-16 C++
Windows系列 -- 设备IO 简介本篇索引大致分为以下内容:设备、接口、同步设备I/O、异步设备I/O。 该篇非入门,可止步。 汇总本节以图示形式列出,供随时索引。更详细节可参考 Windows via C/C++ (第五版)。 2024-04-07 Windows
Windows 系列 -- 规划 一、简介该系列将作为 Windows via C/C++ (第五版)的索引,大致可分为以下几类: Windows 内核对象:重中之重。 Windows 开发通识: 一些常识,比如: 进程,线程,设备等。 Windows 技术设施: 一些便捷接口,比如:可提醒 IO 提供的 QueueForAPC 机制。 二、规划 设备IO Windows 消息 … 三、体会Windows Job: 2024-04-07 Windows
SDK 系列 -- Crashes 一、背景应用开发时,难免遇到崩溃问题:常识用于缩小检索范围;检索能力要靠经验积累喽。 二、SDK 崩溃: spdlog: 开源日志库当日志路径存在 utf16 字符时,构造函数传入的路径参数会造成崩溃。此时,需要单独构建支持 utf16 的库版本。 zmq: 开源IPC库zmq 会在当前用户目录下的某个路径写入一些临时数据。如果当前用户的账户名存在 utf16 字符时,zmq 创建 socket 2024-02-27 SDK
SDK 系列 -- CEF -- 构建流程(Current Branches & Legacy Branches) 一、背景桌面端开发中,会有使用到 Webview 的场景。当有视频播放需求时,需要本地构建带有自定义开关的 CEF。由于版权限制,CEF官方提供的库文件并不支持该动能。如果桌面客户端使用的时 Qt, Qt WebEngine 也是不支持的哦。相较于 QWebEngine,我们通常会选择灵活性更大的 CEF。截至 2024年2月26日,CEF 的最新 Release 大版本号是 122。对于 CEF 2024-02-26 SDK
下载器 -- IPC 调研(备忘) -- 2024.09.15 旧稿发布 一、需求对于自研下载器,我们可以直接复用 Aria2c 模块中的 XML-RPC 或者调研新的 IPC 通信。 二、现状端内集成的 Aria2c 下载器使用定制的 MaiaIPC 进行通信:http post。会存在一些问题: Http 链接:N 组资源下载,需要在业务层维持 N 个 Http链接 状态查询:定时主动轮询,会存在 60% 以上的无效查询。 异常同步:强依赖状态查询。若不查询,则无 2023-09-16 C++
下载器 -- 调试工具(备忘) 一、背景桌面客户端开发会涉及到文件更新:大文件的局部更新。通常情况下,我们可以使用了 Aria2c 作为辅助下载工具(非 libaria)。文件局部更新的需求,实现主流的更新下载方案很重要。 二、现状自研下载器是采用 Golang 语言开发,并以库的形式供平台集成。开发前期存在以下问题: Golang 只能提供 Windows 平台的动态链接库,且缺少 *.lib 符号文件 自研库的开发同学资历 2023-09-15 C++
CEF3 系列 -- 实践汇总(持续更新) 前言首次半年绩效考核,挺好的绩效。输出一些技术相关的汇总, 比如:Cef。 20 年 7 月,应届入职。博主首次接触 Web 相关开发:Electron & VueJS 桌面客户端。 22 年 11 月,博主入职新公司,并再次接触 Web 相关的开发:Qt & QCefView 桌面客户端。 正文汇总主要关注应用开发中的技术问题、技术 ‘难点’ 。因此,后续部分将以列表形式给出 2023-09-02 Cef
并发系列 -- 汇总(持续更新) 一、前言本文摘自 C++ Concurrency IN ACTION,一本基于 C++11 标准的并发和多线程编程深度指南。内容包括 std::thread、std::mutex、和 std::async 等基础类的使用,内存模型和原子操作、基于锁和无锁数据结构的构建,以及并行算法和线程管理。同时,会在部分章节附加 Qt 提供的便利工具。 基础类图中涉及 C++ 标准库 和 Qt 提供的一些工 2023-08-06 C++