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

最近在工作中用到了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资源文件组织》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值