加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

DuiVision开发教程(3)-XML资源文件定义介绍

发布时间:2020-12-16 09:08:37 所属栏目:百科 来源:网络整理
导读:全局资源定义-resource.xml 基于DuiVision界面库的程序,需要有一个默认的资源定义XML文件,此文件默认的位置是exe文件所在路径下的xmlresource.xml文件,如果使用了zip压缩文件来保存所有资源文件,则此文件的位置是在压缩包中的xmlresource.xml文件。此

全局资源定义-resource.xml

基于DuiVision界面库的程序,需要有一个默认的资源定义XML文件,此文件默认的位置是exe文件所在路径下的xmlresource.xml文件,如果使用了zip压缩文件来保存所有资源文件,则此文件的位置是在压缩包中的xmlresource.xml文件。此文件中可以定义程序的全局配置、XML文件、字体、图片、文字等资源,示例如下:

<?xml version="1.0" encoding="utf-8"?>
<root>

<!--系统配置-->
<res type="cfg" name="defaultStyle" value="" />
<res type="cfg" name="logfile" value="demoui.log" />
<res type="cfg" name="loglevel" value="1" />
<res type="cfg" name="appMutex" value="MUTEX_DUIVISION_DEMO" />
<res type="cfg" name="enableDragFile" value="1" />
<res type="cfg" name="trayDbClickMsg" value="0" />

<!--风格设置-->
<res type="style" name="default" value="" />
<res type="style" name="qq" value="qq" />

<!—嵌套的XML资源定义文件-->
<res type="res" lang="zh-cn" file="xmldef_string_zh-cn.xml" />
<res type="res" lang="en-us" file="xmldef_string_en-us.xml" />

<!--XML资源-->
<res type="xml" name="dlg_main" file="xmldlg_main.xml" />
<res type="xml" name="dlg_skin" file="xmldlg_skin.xml" />
<res type="xml" name="dlg_about" file="xmldlg_about.xml" />
<res type="xml" name="dlg_login" file="xmldlg_login.xml" />
<res type="xml" name="dlg_msgbox" file="xmldlg_msgbox.xml" />

<!--字体资源-->
<res type="font" lang="zh-cn" name="default" font="微软雅黑" size="12" bold="false" />
<res type="font" lang="zh-cn" name="big" font="微软雅黑" size="14" bold="true" italic="false" underline="false" strikeout="false" />

<!--图片资源-->
<res type="img" name="IDB_MAIN_FRAME" file="skinsWindowsBack.png" />
<res type="img" name="IDB_BT_CLOSE" file="skinsBT_CLOSE.png" />
<res type="img" name="IDB_BT_MIN" file="skinsBT_MIN.png" />
<res type="img" name="IDB_BT_MENU" file="skinsBT_MENU.png" />
<res type="img" name="IDB_BT_SKIN" file="skinsBT_SKIN.png" />

<res type="img" name="IDB_TAB_1" file="skinsTab1.png" />
<res type="img" name="IDB_TAB_2" file="skinsTab2.png" />

<res type="img" name="IDB_ICON_INFO" file="skinsinfo.png" />
<res type="img" name="IDB_ICON_WARN" file="skinswarning.png" />
<res type="img" name="IDB_ICON_ERROR" file="skinserror.png" />

<res type="img" name="IDB_MENU_UPDATE" file="skinsMENU_UPDATE.png" />

<!--字符串资源-->
<res type="str" lang="zh-cn" name="APP_NAME" value="DUI测试程序" />
<res type="str" lang="zh-cn" name="APP_VER" value="1.0.0.1" />
<res type="str" lang="zh-cn" name="OK" value="确定" />
<res type="str" lang="zh-cn" name="CANCEL" value="放弃" />
<res type="str" lang="zh-cn" name="LOGIN" value="登录" />

</root>

这些定义的说明如下:

1、全局配置定义
Xml的type是cfg,目前支持的配置如下:
logfile – 日志文件名,是相对exe的路径的文件名,如果未定义,则不会生成日志文件
loglevel – 日志级别,1表示调试级别,2表示信息级别,4表示错误级别,8表示致命级别
defaultStyle – 默认的风格,resource.xml中的每个资源定义都可以加一个style属性,通过style属性指定这条资源定义是针对哪种风格的,只有和当前的风格相同的资源或者默认风格的资源才会被加载,资源定义中指定风格的例子如下:

<res type="xml" style="qq" name="dlg_main" file="xmldlg_wnd.xml" />

appMutex – 应用程序互斥量的名字,如果指定了此变量,则应用程序只能创建一个运行的进程,第二个进程运行时候判断如果存在此名字的互斥量,则退出
enableDragFile – 是否允许拖拽一个图片文件到程序窗口来指定当前使用的背景图片
trayDbClickMsg – 在托盘图标双击是否发送消息,用于重新定义托盘图标双击的行为,托盘图标双击的默认行为是打开程序的主窗口,如果此变量设置为1,则双击托盘图标会给应用程序发送一个DUI消息,消息类型为MSG_TRAY_DBCLICK,消息的发送方ID和名字分别是TRAY_ICON和NAME_TRAY_ICON,可以在DUI消息处理类中增加对此消息的处理,来实现自定义的双击动作

2、风格定义
type是style,name是风格的名字,仅用于说明,value是风格的值,每个资源定义中的style对应的是风格的value部分。
资源XML中所有的定义都可以加一个style属性来指定当前定义是针对特定风格的,如果和当前的风格一致,则使用此定义覆盖之前的未指定风格的同名的定义。
例如下面的两个定义是定义的名为IDB_SCROLL_V的图片资源,一个是缺省定义,一个是针对qq风格的定义,如果当前不是qq风格,就会用前一个定义,如果当前是qq风格,就会用针对qq风格的定义,如果当前是qq风格,但没有第二行针对qq风格的定义,则也会使用第一行的缺省定义。

<res type="img" name="IDB_SCROLL_V" file="skinsdefaultSCROLL_V.png" />
<res type="img" style="qq" name="IDB_SCROLL_V" file="skinsqqSCROLL_V.png" />

3、资源文件定义
Type是res,用于加载嵌套的资源定义文件,file是对应的文件路径名,是相对exe所在的路径,通过lang属性可以指定此资源文件仅针对哪种语言。

4、xml文件定义
Type是xml,name是其他地方引用时候的名字,file是对应的文件路径名,是相对exe所在的路径。

5、字体定义
Type是font,lang表示是针对哪种语言的字体。其他属性说明:
name – 字体定义名,在其他地方用名字进行引用
font – 字体名
size – 文字大小
bold – 是否粗体(true|false)
italic– 是否斜体(true|false)
underline – 显示下划线(true|false)
strikeout – 显示删除线(true|false)
os – 表示此字体定义适用于哪些操作系统,例如os=”winxp,win7”表示此定义仅针对xp和win7操作系统,可用的操作系统名字符串包括win98、winme、winnt、win2000、winxp、win2003、vista、win7、win8。

6、图片资源定义
Type是img,name是其他地方引用时候的名字,file是对应的文件路径名,是相对exe所在的路径。

7、字符串资源定义
Type是str,lang表示是针对哪种语言的字体,name是其他地方引用时候的名字,value是字符串内容。
定义的字符串资源可以在各个空间的title属性中引用,引用时候要用[]包围,例如title=”[APP_NAME]”就可以在title中引用APP_NAME对应的字符串。

8、资源中的多语言定义
资源定义xml中每一项都可以指定语言,如果定义中有lang属性,则表示这条定义是针对哪种语言的,如果和当前语言不相符,则不会被加载。

对话框定义文件

程序中所有界面都是基于对话框或菜单等窗口的,每个对话框都需要有一个XML定义文件,用于描述对话框中的内容,对话框中主要是组成对话框的各个控件的定义,对话框的XML定义示例如下:

<?xml version="1.0" encoding="utf-8"?>
<dlg name="dlg_about" title="MsgBox" width="450" height="230" appwin="1" resize="1" translucent="245" frame="" bkimg="skin:SKIN_PIC_7" crbk="000000" >
    <base>
        <imgbtn name="button.close" pos="-45,-0,29" skin="IDB_BT_CLOSE" show="1"/>
        <text name="title" crtext="FFFFFF" crmark="800000" font="big" pos="10,5,200,25" title="关于[APP_NAME]" mask="[APP_NAME]" response="0" show="1" />
    </base>
    <body>
        <area name="area-1" pos="0,40" begin-transparent="100" end-transparent="30" />
        <area name="area-2" pos="0,40,-0" begin-transparent="30" end-transparent="30" />
        <area name="area-3" pos="0,-37,-36" begin-transparent="70" end-transparent="70" />
        <area name="area-4" pos="0,-36,-0" begin-transparent="88" end-transparent="88" />
        <img name="icon" pos="25,45" width="128" height="128" image="skinsscriptnet.jpg" mode="normal" framesize="0" response="0" show="1" />
        <text crtext="000000" pos="170,45,-25,65" title="[APP_NAME] [APP_VER]" />
        <text crtext="000000" pos="170,65,85" title="2013-2014" />
        <linkbtn name="linkbtn1" crtext="800000" pos="170,100,130" show="1" title="http://www.blueantstudio.net" href="http://www.blueantstudio.net" />
        <button name="button.ok" skin="IDB_BT_DEFAULT" title="[OK]" pos="-100,-30,-20,-6" show="1" />
    </body>
</dlg>

其中由几部分组成,dlg标签是对话框自身一些属性的描述,可以设置对话框的大小、背景图片、蒙版图片、透明度、应用程序窗口属性、改变大小属性等;
base标签下面的内容都是属于对话框的基础控件,一般可以把对话框的标题和关闭按钮等放在基础控件部分定义;
body标签下面的内容是属于对话框的普通控件,除了基础控件之外,其他内容都放在body标签下面定义。
base和body下面都是具体控件的定义描述,可以参考后面关于每个控件的属性说明。
以上对话框XML定义的界面效果如下:

菜单定义文件

菜单也是通过XML文件来定义,菜单XML的定义示例如下:

<?xml version="1.0" encoding="utf-8"?>
<menu title="TrayMenu" width="250" item-height="25" left="30" frame-width="0" top-height="72" bottom-height="30" bkmode="mid" width-lt="5" height-lt="70" width-rb="5" height-rb="30" bkimg="skinsmenu360TrayMenu_218.png" >

    <text pos="10,-10,25" crtext="FFFFFF" font="bold" title="DUI托盘菜单" />
    <img pos="-60,5" width="48" height="48" image="skinsiconMovies.png" mode="normal" framesize="1" tip="图片" />
    <text pos="10,-5" crtext="808080" font="bold" title="蓝蚂蚁工作室" />

    <menuitem name="restore_mainwnd" skin="" image="" title="恢复窗口" font="bold" action="show-window:dlg_main" />
    <menuitem separator="1" skin="IDB_MENU_SEP" />
    <menuitem name="menu_main" menu="menu_main" />
    <menuitem name="menuitem.sub" title="子菜单" width="150" skin="IDB_MENU_ARROW" bkmode="frame" bkimg="skin:IDB_MENU_BACK" frame-width="3" top-height="0" bottom-height="0" >
        <menuitem name="360safe" title="360安全卫士" action="dlg:dlg_login" />
        <menuitem name="360sd" title="360杀毒" action="dlg:dlg_login" />
        <menuitem name="menuitem.360.sub1" title="360工具" width="150" skin="IDB_MENU_ARROW" bkmode="frame" bkimg="skin:IDB_MENU_BACK" frame-width="3" top-height="0" bottom-height="0" >
            <menuitem name="360driver" title="360驱动修复" action="dlg:dlg_login" />
            <menuitem name="360soft" title="360软件管家" action="dlg:dlg_login" />
        </menuitem>
    </menuitem>
    <menuitem name="menuitem.runtest" title="执行进程" action="run:{platpath}DuiVisionDemo.2008d.exe|testcmd" />
    <menuitem separator="1" skin="IDB_MENU_SEP" />
    <menuitem name="item_help" skin="IDB_MENU_HELP" img-count="3" title="帮助" action="link:http://www.blueantstudio.net" />
    <menuitem separator="1" skin="IDB_MENU_SEP" />
    <menuitem name="close_app" skin="" image="" title="退出" action="close-window:dlg_main" />

</menu>

菜单定义文件的根节点是menu节点,menu节点可以定义一些菜单的属性,包括菜单的大小、图标区域的宽度、背景图片等。
menu节点下面是每个菜单项和控件的定义,菜单项一般用menuitem标签进行定义,除了菜单项之外,还可以定义菜单分隔线,以及其他的控件,例如图片控件。
菜单的显示区域可以分为3段,中间是菜单项部分,上面和下面是可以显示其他控件的区域,如果要在底部区域显示图片、文字等控件,这些控件的位置定义中的Y坐标都应该使用负数来定义。
以上菜单定义文件的实际显示效果如下:


DuiVision开源代码下载地址(github):https://github.com/blueantst/DuiVision
蓝蚂蚁工作室主页:http://www.blueantstudio.net DuiVision QQ群:325880743 微信公众号:blueantstudio 或搜索 蓝蚂蚁工作室

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读