SOUI Logo
SOUI 5.2
轻量级、高性能、跨平台的C++ GUI开发框架
立即下载 Gitee仓库 GitHub仓库 SOUI帮助

为什么选择SOUI?

SOUI是一个基于C++的轻量级GUI开发框架,支持Windows、Linux、MacOS平台,后续也将支持更多平台。它提供了丰富的UI组件和高效的渲染引擎,帮助开发者快速构建美观、高性能的桌面应用程序。

跨平台支持

一套代码,多平台运行。支持Windows、Linux、MacOS平台。现有基于SOUI开发的Windows下的软件,最快10分钟就可以支持linux,macOS。

高性能渲染

优化的渲染引擎确保UI流畅运行,即使在低配置设备上也能提供良好的用户体验,可以选择gdi也可以选择Skia。

体积小巧

功能模块采用插件式设计,按需装配:最小配置编译后体积可以<2M。

丰富的组件

提供按钮、列表、树形控件、表格等常用UI组件,满足大多数应用开发需求。丰富的虚表支持,解决大量数据展示性能问题。

XML布局

支持XML定义UI布局,实现界面与逻辑分离,便于维护和修改。支持多种布局模式:线性布局,相对布局,网格布局等,轻松解决布局问题。

完全开源

所有代码全部开源,包含SOUI核心代码及所有组件;也包括SOUI的跨平台支持模块SwinX,所有代码尽在掌控。

SOUI 自研作品

以下作品均由 SOUI 团队完全自主研发,展示了 SOUI 框架在不同应用场景下的强大能力和灵活性。

案例展示

以下是一些使用SOUI开发的实际应用案例,展示了框架的强大功能和灵活性。

迅游加速器

迅游游戏加速器

基于SOUI开发的界面效果非常炫的游戏加速器,具有精美的UI界面和流畅的动画效果。除迅游,还有很多游戏加速器都选择使用SOUI作为UI引擎

视频播放器

视频播放器

深受用户喜爱的视频播放器,同样具有精美的UI界面和流畅的动画效果,和视频播放完美结合。

百度网盘

百度网盘

使用SOUI开发的百度网盘,SOUI支持起百度网盘的各种复杂交互。

查看更多案例

获取SOUI

SOUI可通过以下方式获取:

获取源代码

快速开始

以下是一个简单的SOUI应用程序示例:

#include "souistd.h"

class CMainDlg : public SOUI::SHostDialog {
public:
    CMainDlg() : SHostDialog(_T("LAYOUT:XML_MAINWND")) {}
    
    void OnClick() {
        SOUI::SMessageBox(NULL, _T("Hello SOUI!"), _T("Greeting"), MB_OK);
    }
    
    EVENT_MAP_BEGIN()
        EVENT_ID_COMMAND(1, OnClick)  // 按钮ID为1时触发OnClick
    EVENT_MAP_END()
};

int WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE, LPTSTR lpCmdLine, int nShowCmd) {
    SOUI::SApplication *theApp = new SOUI::SApplication(hInst);
    ... //config app
    ... //init soui resource
    {
    	CMainDlg dlgMain;
    	dlgMain.DoModal();
    }
    delete theApp;
    return 0;
}

技术文章

了解SOUI的最新开发动态、技术解析和最佳实践。

从 Windows 到鸿蒙:一个 C++ DirectUI 框架是怎么吃下五个平台的

从 Windows 到鸿蒙:一个 C++ DirectUI 框架是怎么吃下五个平台的 当”自主可控”从口号变成刚需,一个老问题再次摆在国内 C++ 客户端团队面前:我们的界面代码,能不能也跑在鸿蒙上?一、为什么是现在鸿蒙(HarmonyOS / OHOS)的本体语言是 ArkTS,UI 体系…

阅读全文 »

SOUI5:全网首款全平台原生兼容的 C++ GUI 框架——一套代码终结多端多团队维护噩梦

SOUI5:全网首款全平台原生兼容的 C++ GUI 框架——一套代码终结多端多团队维护噩梦 你的 App 是否还在 iOS、Android 各养一个团队、各维护一套代码?逻辑对不齐、bug 翻倍、功能上线永远不同步?本文介绍全网第一款覆盖 Win/Linux/macOS/Android/iOS 五大…

阅读全文 »

一套 C++ 代码,桌面与移动端通吃:SOUI for Android 实战移植中国象棋

一套 C++ 代码,桌面与移动端通吃:SOUI for Android 实战移植中国象棋 我最近把一个原本运行在 Windows、Linux、macOS 桌面端的中国象棋联网游戏,使用 SOUI for Android 移植到了 Android 平台。整个移植过程几乎没有改动业务代码,C++ 主窗口类、游戏逻…

阅读全文 »

SOUI for Android:一套 C++ 代码,实现真正的跨平台 UI

SOUI for Android:一套 C++ 代码,实现真正的跨平台 UI 本文介绍 SOUI 框架的 Android 适配方案,展示如何用 C++ 开发高性能、安全、跨平台的移动应用,同时与 Android 原生系统无缝集成。🔥 为什么选择 SOUI for Android?在移动开发领域,跨平台方案层…

阅读全文 »

XPlayer:SOUI5+SDL3打造的高性能跨平台视频播放器

XPlayer:SOUI5+SDL3打造的高性能跨平台视频播放器在桌面应用开发领域,跨平台一直是一个令人头疼的问题。特别是对于Windows平台的开发者来说,想要将应用移植到Linux平台,往往需要重写大量代码。今天我要介绍的XPlayer项目,采用SOUI5+SWINX这套跨平台框…

阅读全文 »

XMusic:我用 C++ 写了一个内存仅 10MB 的跨平台音乐播放器

XMusic:我用 C++ 写了一个内存仅 10MB 的跨平台音乐播放器写在前面:这是一个纯 C/C++ 实现的开源音乐播放器项目,零依赖、单文件发布,空载内存占用仅约 10MB。如果你厌倦了 Electron 应用的臃肿,或者对 C++ GUI 开发感兴趣,这篇文章或许能给你一些启发…

阅读全文 »

【SOUI 布局之FrameLayout】:打造专业级界面布局

【SOUI 布局之FrameLayout】:打造专业级界面布局引言你是否曾经为复杂界面的布局而烦恼?是否羡慕过 IDE 那样的专业界面布局?今天,我要向大家介绍 SOUI 框架中的一个新的布局——FrameLayout,它能让你轻松实现类似 MFC CFrameWnd 的停靠布局效果,而且…

阅读全文 »

为什么桌面UI开发还在用PNG?SOUI的SVG方案才是未来

为什么桌面UI开发还在用PNG?SOUI的SVG方案才是未来在高分屏时代,传统位图资源已经难以满足现代UI开发的需求。作为一名桌面应用开发者,你是否也遇到过这些问题:为了适配不同DPI,需要准备多套资源,包体积越来越大位图缩放后模糊不清,用户体验大打折扣…

阅读全文 »

跨平台还能这么玩?看 SOUI 如何用 select 实现 Windows内核对象

前言:作为 swinx的作者,今天和大家分享一下内核对象在这个跨平台层的设计思路。在 Linux 上模拟 Windows API 不难,但模拟得既高效又优雅就不容易了。今天带大家深入 swinx的源码,看看一个”非主流”但异常实用的技术方案——用 select+pipe 实现 WaitFo…

阅读全文 »

我在 Linux 上跑 Windows 程序?这套跨平台资源编译技术有点东西

一句话总结:用 Windows 的资源管理方式,在 Linux/macOS 上实现单文件发布,这才是真正的跨平台开发体验。先说说痛点做过跨平台 GUI 开发的同学都知道,资源管理是个让人头疼的问题:Windows:用 .rc 资源文件,编译进 exe,单文件发布美滋滋Linux/macOS:…

阅读全文 »
访问知乎专栏

社区支持

加入我们的社区,获取帮助和分享经验: