从Bkwin到DUIEngine快速入门

从Bkwin到DUIEngine快速入门

DuiEngine是一个基于金山Bkwin修改完善形成的一个新界面库,该库吸取了Bkwin的精华,经过全面重构对原有不合理或缺失的地方进行修正。本文主要是指导原使用bkwin 的人员快速入门。

一、资源处理方式上的区别

入门的第一步就是了解DUIEngine的资源处理方式,搞清楚这个后面的相对就比较easy了。原来熟悉bkwin的同学,都知道bkwin的资源是这么干的:

文件

说明

例子

bkwinres.h

控件ID的宏定义

#define    IDC_BTN_ CLOSE    110001

bkwinres.rc2

资源定义

定义XML,PNG,BMP等资源

DEFINE_XML(IDR_SKIN_DEF,"res\\app_skin.xml")

app_string.xml

定义字符串

您好

app_skin.xml

定义皮肤

app_style.xml

定义风格

App_main.xml

布局定义

定义窗口的而已

 

 

index.xml和residbuilder工具

工欲善其事,必先利其器。在DUIEngine里,引入了一个index.xml和residbuilder工具。Index.xml其实和原来bkwinres.rc2的作用是一样的,就是来定义资源。

这个只是指定了资源类型、资源名称、资源ID。需要经过residbuilder工具来生成以下文件:

Duires\winres.rc2: 是根据index.xml动态生成的,就是以前的bkwinres.rc2。

Winres.h: 自动根据布局文件(如dlg_mail.xml)生成的控件的宏定义。在布局文件里,每个控件多了个name,residbuilder就是根据name和id生成出来宏定义。另外,还可以自动为编出id。

name2id.xml:这个自动生成出来的NAME和ID的映射关系,主要是程序内部使用。

 

Residbuider的使用说明:

residbuilder  -y -i .\skin\index.xml-r .\duires\winres.rc2 -n .\duires\name2id.xml -h .\duires\winres.h

-y: 强制改写(只读文件)

-i: 资源定义文件            *所有用到的资源需要在此处定义

-r: 生成的资源rc2文件      *将资源加入PE文件

-h: 生成的头文件            *生成资源名称和ID的宏定义

-n: 生成的名称ID映射文件   *生成名称和ID的对应关系

-p: 皮肤路径                *相对于程序的.rc文件

 

窗口布局定义

和bkwin相比,DUIEngine抛弃了原来的Head、Body、Foot的三部分做法,只剩一个Body了。

title="DUI-DEMO"width="600" height="400" appwin="1" ncRect="5,5,5,5"  resize="1" translucent="0"  nomaxsize="0">

   

    name="maindlg"pos="0,0,-0,-0" class="cls_dlg_frame">

     

        DUI-Demo ver:%str1%

       

     

   

   

红色的部分就是原来新增的或变化比较大的。在DuiEngine里,定义skin的时候可以指定属主,如:

title="DUI-DEMO"…> 因是指定一个属主,每次在打一个窗口的时候,都会加载这个窗口的私有资源,比如一般很少用的对话框,以减少资源的使用。

…ncRect="5,5,5,5"… 就是指定窗口的非客户区, 比如 Resize的时候,到这个非客户区就会出现光标指针改变。

…translucent… 指定窗口半透明。

  新增,标题栏。在标题栏双击可最大化、还原窗口,还可以拖动窗口。

常用控件的属性定义

def_objattr.xml。 针对经常使用控件的不变属性,在此处定义,以免每次都要写。

你可能感兴趣的:(金山开源)