整合SOUI的默认资源(soui-sys-resource.dll)版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/***xuan***/article/details/62069738
最近在工作中用到了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>节点下追加以下内容:
- 二步:将theme_sys_res文件夹下的所有资源文件的相对路径添加到uires.idx文件之中,并设置其对应的资源类型及名称
在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" />
- <!--界面库默认资源-->
- <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.***heckbox" 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资源文件组织》
|