当前位置: 首页 > 软件库 > 程序开发 > UI组件库 >

SoUI

C++ DirectUI库
授权协议 MIT
开发语言 C/C++
所属分类 程序开发、 UI组件库
软件类型 开源软件
地区 国产
投 递 者 端木志诚
操作系统 Windows
开源组织
适用人群 未知
 软件概览

SOUI是什么?SOUI是一个C++ DirectUI库。

虽然DirectUI不是什么新技术,但是要把UI做好,DirectUI确实是目前为止最有效的解决方案。

SOUI不是一个新项目,它是基于作者这前开发的DuiEngine再经过为期近半年的重构后完成的版本,(DuiEngine是一个基于原金山的Bkwin重构的UI库,经过两年的不断更新,已经相对稳定,并且已经在多个有大量用户的客户端产品中使用,如多玩魔盒2.0等)

鉴于原有框架的局限,为了更好的满足简化UI开发的目的,作者又重新开发了这套SOUI。
SOUI相对于DuiEngine的改进

做SOUI有几个核心需求:
1、功能模块化:特别是渲染部分要让用户可以根据需要选择适合的模块,如GDI,GDI+,SKIA。
2、性能优化
3、简化XML配置
4、删除原有项目中为了版本兼容而遗留的垃圾代码
5、优化项目管理
6、增加代码注释
同时新版本也增加了一些新的特性:
1、新增多语言翻译支持。
2、程序资源提供模块支持多份,以便为从脚本创建UI提供更好的支持。

3、完善LUA脚本模块。

(编者注:此库是2014年中才开发完成的,svn近期都有在更新,所以不用担心它是老掉牙的东西。而且是基于一个稳定的库改进而来,所以也不要以为它不成熟。强烈推荐哦)

Demo效果:

  • Q1 如何看待字符串的问题? =》将SStringT 看做 CString就行了,这样就容易理解了   Q2 设置边框线 =》灵活的使用margin-x 和 margin-y的值 然后设置 colorborder 就可以设置出边框线,在透明的窗口下 比较好看 例子:给窗口设置边框线: margin-x="2" margin-y="2" colorBorder="#B8E0F8"   Q3 自绘在那

  • 本周任务:"具体在下面一排" <后续为:基本控件.可拓展性,界面配置> 模块分类 + 渲染- 已解决; 结构和框架<目录下面有图>; 消息机制 - 已解决; 类关系图. 待办:补充控件列表列举. ****************************************************************** 能做什么: 多语言,动画,模块支持多分<脚本创建UI>.LUA脚本模块

  • ​基于SOUI开发的应用展示 一种快速刷新richedit中内嵌动画的方法的实现 使用SOUI开发的界面集锦

  • 对于SOUI来说皮肤对象是一个很重要的对象。SOUI内置一了套常用皮肤,祥见soui-sys-resource\theme_sys_res\sys_xml_skin.xml。这里定义了几乎所有常用的皮肤。对于SOUI来说皮肤就是一个绘制对象,它可能是图片,也可能是色彩或者其它方法绘制的图形图像。皮肤和控件关系就像灵与肉,控件一方面实现功能,另一方面调用皮肤装饰自己让它看起来是某个控件。但是另一方面

  • 不知道何时有这个一个开源的UI库,叫soui。一直加在群里面,比较少说话。这不项目时间太忙吧,苦逼的as3终于写完了,看起来娱乐和游戏直播都是正常的了,就等上线了,也就没我啥事了,这不,今天还在加班,说好的只加两个月的周六的哦,不过来这两个月,反反复复的事情太多了,习惯了。。 这段时间都在上班,没时间看soui,上星期天在家看了一下,发现它分离得还是比较的彻底,于是打将将soui中的skia-re

  • 首先使用SOUI的向导建立一个工程 需要注意以下几点: 首先要包含 notifycenter.h这个头文件,这个头文件工程默认是不会添加的,验证方法使用SNotifyCenter在程序的任何一个地方会出现红色的下划线表示没有包含 常规普通模式下的中心事件 作用在目标窗口上的,注意目标窗口需要继承public TAutoEventMapReg<类名> 这样就可以自动注册这个事件中心 两种常规的处理方

  • BSCMAKE: error BK1506 : 无法打开文件“.\Debug\stdafx.sbr”: No such file or directory 工程属性 -> c/c++ -> 浏览信息, 启用浏览信息   官方教程 https://www.cnblogs.com/setoutsoft/p/3925996.html 但是 里面的东西有误 版本2.6.1.1,在SOUI/include

  • 使用常规的控件 以Button为例 首先在工程目录下的【uires】文件夹中找到【xml】文件夹 然后找到 dlg_main.xml 这个文件(可以自定义名称的,这里我是使用向导生成的) 文件修改如下: <window pos="5,[2,-5,-5">     <text pos="|-176,|-48" offset="-0.5, -0.5">第一个UI界面</text>     <butto

  • 目前SOUI里只有文本控件有右键菜单。但是一般来说可能都不需要它显示。即使要显示可能也需要美化一下之类的。下面就介绍如何处理它。 第一步:在事件处理加上处理所有控件的右键事件。 EVENT_MAP_BEGIN() 。。。 EVENT_HANDLER(EVT_CTXMENU, OnCtxMenu) EVENT_MAP_END() 第二步:处理事件,将bCancel设置为TRUE。

  • 日后查看研究,https://www.cnblogs.com/setoutsoft/p/6961268.html

  • 比较常用的类 CFileDialogEx类用法 CFileDialogEx openDlg(FALSE,_T("rtf"),_T("soui_richedit"),6,_T("rtf files(*.rtf)\0*.rtf\0All files (*.*)\0*.*\0\0")); if(openDlg.DoModal()==IDOK) {    pEdit->SaveRtf(openDlg.m_

  • 事件映射表 Events.h 所有的系统内置控件的事件都在这里 enum SOUI_EVENTS {     EVT_INIT=8000,     EVT_EXIT,     EVT_TIMER,     //基本窗口事件     EVT_SETFOCUS=8100,     EVT_KILLFOCUS,     EVT_CREATE,     EVT_DESTROY,     EVT_SIZE,

  • 在soui中为了方便将工作者线程中的处理结果及时反馈到UI线程设计了事件中心来解决此类问题。 在使用事件中心需要注意的事项如下: 首先, 要new一个事件中心对象,既然new了对象当然就要delete,相关代码如下: SNotifyCenter *pNotifyCenter = new SNotifyCenter; // BLOCK: Run application

  • 运动基础 窗口淡入淡出 1.在函数中将窗口透明度设置为最高,设置定时器,到达指定时间后再打开另一个定时器,在定时器里面实现淡入淡出。 LRESULT CMainDlg::OnNotice(UINT uMsg,WPARAM wp,LPARAM lp,BOOL & bHandled) {    SStringT strNotice = *(SStringT*)wp;    CMainDlg* pDlg

  • SOUI 简介: SOUI是目前为数不多的轻量级可快速开发window桌面程序开源DirectUI库.其前身为Duiengine,更早期则是源自于金山卫士开源版本UI库Bkwin.经过作者多次开发维护升级后得此库.SOUI其寓意为"瘦UI" "UI,just so so!",目的就是能够快速开发,并且在产品发布局时不需要携带其它额外的第三方依赖库,高度精简及集中;模块化使得渲染模块,图片解码模块,

  • 基于传统技术开发的 Windows 桌面应用,在高分辨率的显示设备上表现得“惨不忍睹”。随着高分辨率显示设备的普及,所有桌面应用程序的开发人员,都需要关注自己的软件在不同的 DPI 上的表现。 1 应用程序感知 DPI 变化 在 Windows 2000 之前,大部分大部分开发人员对显示器分辨率的关注点是如何让自己的程序在低分辨率的显示器上表现正常,因为过低的分辨率会导致窗口界面显示不完整。随着垂

  • /* 2018-8-27 15:21:21 在SOUI工程中关于定时器的使用 */ CSimpleWnd::SetTimer(定时器的ID,间隔时间,NULL); CSimpleWnd::KillTimer(定时器的ID);   /* 2018-8-31 14:31:22 使用zip打包 */ 修改资源后 需要将idx文件重新编译一遍,才能将资源加载进入 通过点击事件 进行一个控件的刷新可以得到一

 相关资料
  • DirectUI是一款所见即所得的界面开发工具,将软件中与界面相关的资源文件、资源配置和界面逻辑与软件业务逻辑部分进行彻底的分离。是全球唯一一款占用资源小、绘图性能高、依赖性小的纯Win32 SDK开发的Windows下普遍适用的可视化界面库。与标准控件换肤类界面库不同的是,DirectUI本身具备了标准控件换肤的功能,但其更强调用户 自定义界面的开发,提供可扩展的多种布局控件、几十套可扩展的功能

  • 问题内容: 如何在Python3中将输入转义到MySQL数据库?我正在使用PyMySQL,并且工作正常,但是当我尝试执行以下操作时: 如果字符串具有或,则它将不起作用。我也尝试过: 问题在于该库(PyMySQL)使用了Python2.x的格式语法,该语法不再起作用。我也发现了这个可能的解决方案 在这里,但我不知道在何处添加此代码。这就是我得到的一切: 编辑:我解决了!在PyMySQL中,正确的方法

  • 问题内容: 我感到困惑的是,在同一SQL Server实例中使用跨数据库查询的优缺点是什么? 我能想到的一件事是性能问题(查询将很慢),如果是这种情况,该问题的解决方案是什么? 请重点说明解决方案的优点和缺点,以便我可以放心地在两个数据库上工作。 我有两个数据库db1 Companies / CRM和db2 Products / E-commerce 问题答案: 您可能遇到的问题与管理有关。请在此

  • 问题内容: 有多少个数据库系统使用JSON进行存储或传输?我知道: CouchDB MongoDB DBSlayer 我记得我在SO用户的个人资料中看到了另一个供应商。该系统使用的是所谓的二进制JSON,但我不记得该产品的名称。 最近,似乎越来越多的DB项目正在将JSON用于持久性存储。其中一些甚至将HTTP用作传输层。 问题答案: MongoDb是使用二进制JSON存储格式的一种。我不知道是否还

  • 问题内容: 我有一张桌子,大约有17个字段。我需要在此表中执行频繁的更新。但是问题是 每次我可能只更新几个字段 。在这种情况下,编写查询以进行更新的最佳方法是什么?我正在寻找一个选项,其中 值仅在不为null时才更新 。 例如,我在数据库Say A,B,C,D中有四个字段。用户更新say D的值。所有其他值保持不变。因此,我需要一个更新查询,该查询仅更新D的值,而其他值保持不变。因此,如果我将a,

  • 问题内容: 我有一个专栏 组 。 群组 具有存储在group_types中的不同类型(买方,卖方,裁判)。只有当该组是买方类型时,它才具有另一种(更专门)的类型,例如电气和机械类型。 我对如何将其存储在数据库中感到有些困惑。 有人可以建议我一个数据库结构吗? 谢谢 问题答案: 将您的存储为层次结构表(带有或模型): : 将选择中的所有买家。 : 将选择任何数据库中的所有买家。 如果您不需要层次结构

  • 问题内容: 我在同一服务器上的2个不同数据库中有2个相同的表。将数据从表复制到另一个表的最佳方法是什么? 问题答案: 使用: 存在是经过简化的,但是如果有主键/ auto_increment可以担心/等,那么您就省去了。

  • 问题内容: 我想通过注释@Query通过Jpa存储库进行Join查询。我有三个表。 本机查询是: 现在我有了Table Hibernate实体,所以我在ApplicationRepository中尝试过 日志说 意外的标记 有什么想法吗? 我的表实体 Application.java: Customer.java: User.java: 问题答案: 您不需要JPA中的ON子句,因为借助映射注释,J