跳转至

SOUI 帮助文档

关于本文档

SOUI 帮助文档面向所有希望使用 SOUI 进行界面开发的开发者,覆盖从安装、基础概念到跨平台与高级主题的完整内容。本页是文档的入口,建议先根据下方的「推荐学习路径」定位你需要的章节。

SOUI 是一套轻量级、跨平台的 C++ DirectUI 界面开发框架。它采用「XML 布局 + 图片资源 + 控制脚本(Lua / JavaScript)」的开发方式,形态上接近 Web 程序,但运行在原生层、发布时无需携带额外第三方依赖。

当前主版本为 SOUI5,通过内置的 swinx 模块在六个平台上复刻 Windows API,使同一份 C++ 业务代码即可覆盖:

桌面端:Windows / Linux / macOS
移动端:Android / iOS / 鸿蒙(HarmonyOS / OHOS)

对非 Windows 平台而言,Windows 与跨平台的代码差异几乎为零——这也是 SOUI 跨平台方案最突出的特点。


核心特性

特性 说明
轻量 DirectUI 扁平化框架设计,消息传递链短;XML 描述界面层级与属性,发布包精简、无多余依赖
真正跨平台 swinx 在各平台实现 Windows API,业务代码几乎无平台分支
智能渲染 精确剪裁区域控制 + 优化刷新策略,支持 Skia / GDI / D2D 渲染后端,可分层混合
模块化架构 渲染、图片解码、资源打包压缩清晰分离,可按需自定义替换
完整控件体系 基础 / 高级 / 容器 / MVC 虚表 / 菜单五大类控件,配套布局系统(linear / grid / anchor / flow / frame / SouiLayout)
强扩展能力 自定义控件、动画系统、脚本(Lua / JS)、属性系统、国际化、IPC、异步任务、定时器、日志等

快速导航

  • 快速开始 — 介绍与特性、系统要求、安装指南、快速入门、SOUI3→SOUI5 迁移
    进入 →

  • 用户指南 — 基础概念、项目结构、资源管理、Soui Host、控件系统、SkinObj、布局系统
    进入 →

  • 跨平台开发 — 概述、桌面端(Windows / Linux / macOS)、移动端(Android / iOS / 鸿蒙)及移动端专项优化
    进入 →

  • 高级主题 — 高级控件、异步任务、IPC、窗口处理、控件优化、国际化、脚本、网络等
    进入 →

  • 示例与案例 — 官方示例、典型应用场景参考
    进入 →

  • 构建与部署 — 编译配置、部署指南
    进入 →

  • API 参考 — 框架接口查阅
    进入 →

  • 故障排除 — 常见问题、调试技巧、社区支持
    进入 →

  • 附录 — 更新日志、许可证、贡献指南
    进入 →


推荐学习路径

如果你是第一次接触 SOUI,建议按以下顺序阅读:

  1. 介绍与特性 —— 弄清 SOUI 是什么、为什么选它,以及跨平台思路。
  2. 安装指南 —— 配置开发环境与 swinx。
  3. 快速入门教程 —— 实际创建一个可运行的项目。
  4. 用户指南 —— 掌握控件系统、布局系统资源管理 与 Soui Host。
  5. 自定义控件 / 动画系统 —— 按需扩展界面能力。
  6. 跨平台开发 —— 当目标要覆盖多端时,了解各平台差异与移动端专项优化。
  7. 高级主题示例与案例 —— 进阶用法与实战参考。

从 SOUI3 升级而来的开发者,请先阅读 SOUI3 到 SOUI5 迁移指南


跨平台速览

SOUI 的跨平台能力来自 swinx:它在各平台把 Windows API 重新实现一遍,让 SOUI 核心以为自己始终运行在 Windows 上。

  • Windows:直接使用系统 Win32 API,不编译 swinx
  • Linux / macOS / iOS:swinx 在模块内部自实现完整平台 API,进程拥有自己的入口与事件循环。
  • Android / 鸿蒙:进程由 JVM / ArkTS 运行时启动,没有自己的启动器,因此通过 PlatformAPI_Init 注册平台 API(详见 跨平台开发 › 概述)。

平台专属能力文档:


获取帮助


SOUI 是怎么来的?

SOUI 是目前为数不多的轻量级、可快速开发 Windows 桌面程序的开源 DirectUI 库,其前身为 Duiengine,更早期则源自金山卫士开源版本的 UI 库 Bkwin。经过作者多次开发、维护与升级后得此名称。

SOUI 寓意为「瘦 UI」「UI, just so so!」,目的就是能够快速开发,并且在产品发布时不需要携带其它额外的第三方依赖库,高度精简及集中;模块化使得渲染模块、图片解码模块、资源打包压缩模块得以清晰分离,更能够高度自定义。UI 解析目前采用 XML 布局,便于理解各控件之间的层级关系及其自身的属性设置。目前已有很多成功的商业产品,深受广大开发者及企业的青睐。