最近在工作中用到了SOUI库,其中需要实现这么一个需求—-整合soui-sys-resource.dll里面的资源到主工程中,最终生成一个单文件版的可执行程序。经过一番摸索后,最终成功实现o(∩∩)o,特意在此留下足迹,希望能够帮助到入坑的小伙伴啦(*^_^*)


第一步:将soui-sys-resource工程中的资源文件夹拷贝到主工程之中

因为soui-sys-resource工程其实就是生成了一个纯资源DLL,因此,直接将工程中的theme_sys_res文件夹拷贝到自己的SOUI工程的uires文件之中即可,如图所示:


第二步:将theme_sys_res文件夹下的所有资源文件的相对路径添加到uires.idx文件之中,并设置其对应的资源类型及名称

由于这个是默认资源,因此只需要参照SOUI开发团队提供的theme_sys_res.rc2文件改就可以啦(^__^)。

  • 在uires.idx文件之中的<LAYOUT>节点下追加以下内容:
    <!--默认界面资源--><file name="SYS_XML_EDITMENU" path="theme_sys_res\sys_xml_editmenu.xml" /><file name="SYS_XML_MSGBOX" path="theme_sys_res\sys_xml_msgbox.xml" />
  • 在此文件之中的<PNG>节点下添加以下内容:
    <!--界面库默认资源--><file name="SYS_BORDER" path="theme_sys_res\sys_border.png" /><file name="SYS_CHECKBOX" path="theme_sys_res\sys_checkbox.png" /><file name="SYS_RADIO" path="theme_sys_res\sys_radio.png" /><file name="SYS_FOCUS_CHECKBOX" path="theme_sys_res\sys_focus_checkbox.png" /><file name="SYS_FOCUS_RADIO" path="theme_sys_res\sys_focus_radio.png" /><file name="SYS_SCROLLBAR" path="theme_sys_res\sys_scrollbar.png" /><file name="SYS_TREE_CHECKBOX" path="theme_sys_res\sys_tree_checkbox.png" /><file name="SYS_TREE_TOGGLE" path="theme_sys_res\sys_tree_toggle.png" /><file name="SYS_HEADER" path="theme_sys_res\sys_header.png" /><file name="SYS_SPLIT_VERT" path="theme_sys_res\sys_split_vert.png" /><file name="SYS_SPLIT_HORZ" path="theme_sys_res\sys_split_horz.png" /><file name="SYS_PROG_BKGND" path="theme_sys_res\sys_prog_bkgnd.png" /><file name="SYS_PROG_BAR" path="theme_sys_res\sys_prog_bar.png" /><file name="SYS_VERT_PROG_BKGND" path="theme_sys_res\sys_vert_prog_bkgnd.png" /><file name="SYS_VERT_PROG_BAR" path="theme_sys_res\sys_vert_prog_bar.png" /><file name="SYS_SLIDER_THUMB" path="theme_sys_res\sys_slider_thumb.png" /><file name="SYS_TAB_PAGE" path="theme_sys_res\sys_tab_page.png" /><file name="SYS_BTN_MINIMIZE" path="theme_sys_res\sys_btn_minimize.png" /><file name="SYS_BTN_RESTORE" path="theme_sys_res\sys_btn_restore.png" /><file name="SYS_BTN_CLOSE" path="theme_sys_res\sys_btn_close.png" /><file name="SYS_BTN_MAXIMIZE" path="theme_sys_res\sys_btn_maximize.png" /><file name="SYS_MENU_CHECK" path="theme_sys_res\sys_menu_check.png" /><file name="SYS_MENU_ARROW" path="theme_sys_res\sys_menu_arrow.png" /><file name="SYS_MENU_SEP" path="theme_sys_res\sys_menu_sep.png" /><file name="SYS_MENU_BORDER" path="theme_sys_res\sys_menu_border.png" /><file name="SYS_MENU_SKIN" path="theme_sys_res\sys_menu_skin.png" /><file name="SYS_ICONS" path="theme_sys_res\sys_icons.png" /><file name="SYS_WND_BKGND" path="theme_sys_res\sys_wnd_bkgnd.png" />

第三步:在UIDEF资源(通常是init.xml)中添加各个默认资源文件的属性,以便被SOUI的Skin引擎正确解析

这次需要添加的信息可以从theme_sys_res\sys_xml_skin.xml上获得,如下图所示:

  • 直接将sys_xml_skin.xml中的<skin>下的内容拷贝到UIDEF资源(通常是init.xml)下的<skin>标签下即可
    <!--默认界面资源--><imglist name="_skin.sys.checkbox" src="PNG:SYS_CHECKBOX" states="8"  /><imglist name="_skin.sys.radio" src="PNG:SYS_RADIO" states="8" /><imglist name="_skin.sys.focuscheckbox" src="PNG:SYS_FOCUS_CHECKBOX"/><imglist name="_skin.sys.focusradio" src="PNG:SYS_FOCUS_RADIO"/><button name="_skin.sys.btn.normal" colorBorder="#7D9EBC" colorUp="#FEFEFE" colorDown="#C6E2FD" colorUpHover="#FEFEFE" colorDownHover="#DBEDFE" colorUpPush="#C6E2FD" colorDownPush="#FEFEFE"/><scrollbar name="_skin.sys.scrollbar" src="PNG:SYS_SCROLLBAR" margin="3" hasgripper="0"/><imgframe name="_skin.sys.border" src="PNG:SYS_BORDER" states="2" margin-x="2" margin-y="2"/><imglist name="_skin.sys.dropbtn" src="PNG:SYS_DROPBTN" states="3"/><imglist name="_skin.sys.tree.toggle" src="PNG:SYS_TREE_TOGGLE" states="6"/><imglist name="_skin.sys.tree.checkbox" src="PNG:SYS_TREE_CHECKBOX" states="9"/><imglist name="_skin.sys.tab.page" src="PNG:SYS_TAB_PAGE" states="3"/><imgframe name="_skin.sys.header" src="PNG:SYS_HEADER" margin-x="3" margin-y="3" states="4"/><imgframe name="_skin.sys.split.vert" src="PNG:SYS_SPLIT_VERT" top="20" bottom="10"/><imgframe name="_skin.sys.split.horz" src="PNG:SYS_SPLIT_HORZ" left="20" right="10"/><imgframe name="_skin.sys.prog.bkgnd" src="PNG:SYS_PROG_BKGND" margin-x="5"/><imgframe name="_skin.sys.prog.bar" src="PNG:SYS_PROG_BAR" margin-x="3"/><imgframe name="_skin.sys.vert.prog.bkgnd" src="PNG:SYS_VERT_PROG_BKGND" margin-y="5"/><imgframe name="_skin.sys.vert.prog.bar" src="PNG:SYS_VERT_PROG_BAR" margin-y="3"/><imglist name="_skin.sys.slider.thumb" src="PNG:SYS_SLIDER_THUMB" states="4"/><imglist name="_skin.sys.btn.close" src="PNG:SYS_BTN_CLOSE" states="3" /><imglist name="_skin.sys.btn.minimize" src="PNG:SYS_BTN_MINIMIZE" states="3" /><imglist name="_skin.sys.btn.maximize" src="PNG:SYS_BTN_MAXIMIZE" states="3" /><imglist name="_skin.sys.btn.restore" src="PNG:SYS_BTN_RESTORE" states="3" /><imglist name="_skin.sys.menu.check" src="PNG:SYS_MENU_CHECK" states="3" /><imglist name="_skin.sys.menu.arrow" src="PNG:SYS_MENU_ARROW" states="2" /><imgframe name="_skin.sys.menu.sep" src="PNG:SYS_MENU_SEP" left="25"/><imgframe name="_skin.sys.menu.border" src="PNG:SYS_MENU_BORDER" margin-x="2" margin-y="2"/><imgframe name="_skin.sys.menu.skin" src="PNG:SYS_MENU_SKIN" states="2" left="25" top="2" bottom="2"/><imglist name="_skin.sys.icons" src="PNG:SYS_ICONS" states="12"/><imgframe name="_skin.sys.wnd.bkgnd"  src="PNG:SYS_WND_BKGND" left="5" right="5" top="40" bottom="40"/>

最后,为了避免出现资源冲突,将SOUI工程中自动加载soui-sys-resource.dll里面的资源文件代码注释即可,如图所示:

整合完成o(∩_∩)o……

参考资料:
- 《第四篇:SOUI资源文件组织》

整合SOUI的默认资源(soui-sys-resource.dll)相关推荐

  1. android资源替换方案overlay,Android 运行时资源替换----Runtime Resource Overlay

    先抛一个问题:现在有一个第三方应用,没有代码,只有编译好的apk,在不去改动这个apk的前提下,如果想改变这个应用中的一些资源显示效果,比如改变一个button的文字,一个imageview的背景,有 ...

  2. Spring源码分析——资源访问利器Resource之接口和抽象类分析

    从今天开始,一步步走上源码分析的路.刚开始肯定要从简单着手.我们先从Java发展史上最强大的框架--Spring...旗下的资源抽象接口Resource开始吧. 我看了好多分析Spring源码的,每每 ...

  3. pod的requests、limits解读、LimitRange资源配额、Qos服务质量等级、资源配额管理 Resource Quotas

    前言 环境:k8s-v1.22.17 docker-20.10.9 centos-7.9 目录 前言 什么是可计算资源 CPU.Memory计量单位 pod资源请求.限额方式 pod定义request ...

  4. 关于K8s中资源服务质量管理Resource Qos的一些笔记整理

    写在前面 分享一些 K8s中资源服务质量管理Resource Qos 的笔记 博文内容涉及: K8s Qos 简单介绍 资源配置的特点: 节点的超用,可压缩/不可压缩,完全可靠性等介绍 QoS Cla ...

  5. HTML 统一资源定位器(Uniform Resource Locators)

    HTML 统一资源定位器(Uniform Resource Locators) URL 是一个网页地址. URL可以由字母组成,如"runoob.com",或互联网协议(IP)地址 ...

  6. DCMTK:“内容映射资源”Content Mapping Resource中的各种CIDxxx和TIDxxx类的测试程序

    DCMTK:"内容映射资源"Content Mapping Resource中的各种CIDxxx和TIDxxx类的测试程序 "内容映射资源"Content Ma ...

  7. 资源征集 | 2021年全国知识图谱与语义计算大会开放资源征集(Resource Track)通知...

    大会时间:2021年8月18日-21日,广州 资源征集截止: 2021年5月20日 开放的资源对促进知识图谱和语义计算相关的科学研究及企业应用十分重要.CCKS 2021将组织开放资源征集(Resou ...

  8. 解决:Activiti7与SpringBoot整合时,默认生成的activiti数据库中只有17张表,无另外8张历史表

    问题 Activiti7与SpringBoot整合时,默认生成的activiti数据库中只有17张表,无另外8张历史表. 原因 Activiti默认关闭了历史表的使用. 解决 在连接数据库的appli ...

  9. 【学习笔记】域名资源记录(Resource Record)

    Zone file描述了DNS zone.DNS zone是层级DNS结构的子集,往往是单独的域.Zone file包括域名到IP地址及其他资源的映射,以RR文本形式表示.zone file可能是一个 ...

最新文章

  1. 【ICML2021】具有持续进化策略的展开计算图的无偏梯度估计
  2. android studio大坑 executing external native build for cmake
  3. python mvc web_浅谈python_web的MVC和MTV
  4. 关于CUDA和CuDNN配置的小问题
  5. 山海伏妖录java_山海伏妖录攻略大全 剧情结局加点妖兽大全
  6. 解决网卡无法自动获取ip的办法
  7. 2017计算机考研视频百度云盘,2017年考研数学视频资料
  8. java简历专业技能,附详细答案解析
  9. java 行政区划代码 民政部 json
  10. HIGEN海坚驱动器维修FDA7045伺服变频器维修
  11. 使用代理ccproxy设置outlook2013 收QQ邮箱(IMAP-SMTP方式)
  12. 一、 Hbase特性 3v特性,Volume(量级) Varity(种类) Velocity(速度)
  13. SSM项目大作业——网上订餐系统
  14. mysql 日历表_如何创建mysql日历表
  15. 【PHP MySQL】数据库专题 第八课 表连接
  16. 【微信推送】微信专属推送——改源码教程
  17. 研究生发论文的流程?
  18. MATLAB画NCEP风场
  19. 搜索引擎蜘蛛 ajax,了解搜索引擎蜘蛛习性 助力内页顺畅收录
  20. 数据结构之查找(六)——平衡二叉树(AVL树)

热门文章

  1. 2023年可见光通信(LiFi)研究新进展
  2. matlab多目标遗传算法,MOGA多目标遗传算法Matlab工具箱 NSGA-II
  3. Logic Pro X for Mac(专业音频编辑制作工具)
  4. Traffic Flow Template(TFT)
  5. Android 游戏存档位置分析
  6. Python自动化小技巧07——符号计算求方程解、二重积分
  7. Java基础 — JDK和JRE的区别和环境变量配置
  8. Flutter glUtilsParamSize: unknow param 0x00008741 错误
  9. 开源BI工具3:dataease
  10. NC开发笔记——单据模板编辑显示公式使用