跳转至

SOUI 框架介绍

1. 什么是 SOUI?

SOUI(Simple/Small/So UI)是一套高效的 C++ DirectUI 开发框架,致力于提供一个轻量级但功能强大的界面开发解决方案。它采用 XML 配置文件 + 图片资源 + 控制脚本(Lua、Javascript)的开发方式,类似于 Web 程序的开发模式。

1.1 发展历程

  1. 最初源自金山卫士开源版本中使用的 UI 库 Bkwin
  2. 后由启程软件开发维护并升级为 Duiengine
  3. 经过多次重构后改名为 SOUI,寓意"瘦 UI"("UI, just so so!")
  4. 目前已经发展到 SOUI5 版本,实现了真正的跨平台支持

1.2 开源协议

  • SOUI 1-2 版本:MIT 开源协议
  • 公司和个人均可免费使用
  • 仅需在发布时附带 SOUI 的许可证
  • SOUI 3+ 版本:自定义开源协议
  • 非商业项目可免费使用
  • 商业项目需要付费授权

1.3 为什么选择 SOUI?

在 Windows 平台上开发客户端产品时,开发者往往面临以下选择:

1. 传统框架

  • MFC(微软在更新)
  • WTL(微软已停止更新)
  • 优点:稳定可靠
  • 缺点:界面不够美观,配置不够灵活

2. 现代框架

  • Qt:功能强大但体积庞大,跨平台特性带来一定取舍
  • Duilib:简单但功能有限,复杂效果实现困难
  • SOUI:平衡了轻量性和功能性,提供完整的解决方案

2. 核心技术特性

2.1 高性能设计

1. 扁平化框架设计

  • 层次简单,消息传递链短
  • 从宿主窗口到控件响应仅一个中间层
  • 最大限度减少性能开销

2. 智能渲染系统

  • 精确的剪裁区域控制
  • 优化的刷新策略
  • 高效的渲染引擎(支持 Skia/GDI)
  • 支持分层渲染和混合效果

3. 优化的动画系统

  • 统一的定时器管理
  • 低 CPU 占用率
  • 流畅的动画效果

2.2 界面布局系统

1. 简洁的布局属性

  • pos:使用"x1,y1,x2,y2"定义相对位置
  • offset:定义额外的位置偏移
  • 支持百分比和像素混合布局

2. 容器分层技术

  • 支持控件容器的多层次组织
  • 自动处理子控件坐标
  • 优化列表控件性能

2.3 资源管理系统

提供三种资源加载方式:

1. 文件方式

  • 直接从文件系统加载
  • 便于开发调试

2. PE 资源

  • 编译到执行文件中
  • 适合发布版本

3. ZIP 包

  • 支持加密保护
  • 推荐使用 7z 打包
  • 支持资源热更新

2.4 控件系统

1. 无窗口控件

  • 轻量级实现
  • 高效的绘制机制
  • 灵活的自定义能力

2. 高性能列表控件

  • 基于虚表技术
  • 动态创建可见项
  • 支持海量数据(700万条数据流畅显示)

3. 先进的 RichEdit 实现

  • 基于 ITextServices 接口
  • 完整的细节处理
  • 优秀的用户体验

2.5 扩展功能

1. 脚本引擎

  • 支持 Lua 脚本
  • XML + Lua 开发模式
  • 灵活的事件处理

2. 多语言支持

  • 内置翻译功能
  • 类似 Qt 的语言模块
  • XML 配置翻译文件

3. 事件处理模型

  • 支持 WTL 风格消息映射
  • 支持事件订阅机制
  • 灵活的响应方式

3. 成功案例

SOUI 已在多个商业项目中得到验证:

1. 医疗领域

  • 瑞雪医生客户端

2. 游戏行业

  • 多玩魔盒 2.0
  • Dota2 游戏盒子
  • 其他多个游戏盒子

3. 知名应用

  • 百度云管家
  • 迅游
  • 航信

4. 获取与使用

4.1 代码仓库

- SOUI 5

- SOUI 2

4.2 快速上手建议

1. 了解 WTL 基础 参考soui-wtl

  • 消息处理机制
  • 事件映射概念
  • 基本开发模式

2. 掌握消息处理

  • 正确使用消息映射
  • 处理消息传递链
  • 避免常见陷阱

结语

SOUI 是一个精心打造的 UI 框架,体现了开发团队的工匠精神。它在保持高性能的同时,提供了丰富的功能特性,是一个值得信赖的 UI 开发解决方案。正如项目理念:"因为努力,所以美丽!"