Mstar之RS文件分析

注:本人博文整理至CSDN以方便查阅,源博文位于EDN


       在每个App底下都有一个res文件夹。这些文件的主要功能是将UI layout从程序中分离,变更的时候无需更改代码。

       这些文件的自动生成应该是源自EMMI Studio。不过我还没用过EMMI Studio来进行开发,一般都是直接手动进行修改。(具体的是否如此,就该问问Mstar官方说法了)

       下面以AlarmApp()为例分析一下RS文件的内容。

 

ApBegin(QvgaP,CLSID_ALARMAPP)

       WndBegin(ALARM_WND_SETALARM)

              WndSetAllSoftkeyRC({SK_SAVE, SK_OK, SK_CANCEL})………………①

        WndSetTitleRC({IMG_NULL_ID,TXT_LTL_N_EDIT_ALARM})

        WdgBegin(CLSID_DOUBLE_TEXT_WIDGET,TitleDoubleTextWidget)

WdgDoubleItemCreateForWndRC({{0,0},{0,0},DOUBLEITEM_STYLE_DOUBLE_TEXT})

            WdgDoubleItemDBTextSetDataByIDRC({TXT_LIL_N_TITLE,TXT_NULL_ID})

        WdgEnd(CLSID_DOUBLE_TEXT_WIDGET,TitleDoubleTextWidget)

       WndEnd(ALARM_WND_SETALARM)

ApEnd(QvgaP,CLSID_ALARMAPP)

 

ApBegin和ApEnd有两个参数,第一个是指ThemeID,主要是在有多个Theme时用来做切换theme的判断。第二个参数很明显,就是对应AP的CLSID了。加载资源的时候,会根据所提供的AP CLSID及Window ID从资源中得到对应窗口的内容。

WndBegin/ WndEnd里的参数是指对应窗口的ID号,这个ID好一般都定义在对应AP的头文件中,如闹铃的是在Mmi_alarmapp_id.h。在一个App中可以定义多个窗口,窗口中又可以定义多个Widget。在程序中Load资源时,变量的数据类型ALARM_WND_SETALARM_t,这个东东又是怎么生成的呢?

这个数据结构是根据用户定义的窗口ID动态生成的。别急!

       在窗体内部就是诸如左右软键,标题,Widget等的layout了。在标号一中设置了左软键功能为保持,Action键为确定,右软键为返回。WndSetAllSoftkeyRC里面的参数在mmi_macro_prop_def.h中可以查看:

#define  WndSetAllSoftkeyRC(...)  PropIDDefine( nAllSkID)  AllSoftkeyVar_t   tAllSk;

AllSoftkeyVar_t这个结构定义在mmi_common_wdgvar.h。具体为

 

typedef struct

{

    u32 nLeftSKID;

    u32 nMiddleSKID;

    u32 nRightSKID;

}AllSoftkeyVar_t;

 

以下是在代码中的调用

ALARM_WND_SETALARM_t *pVar = LoadRC(CLSID_ALARMAPP,ALARM_WND_SETALARM);

WndSetAllSoftkey(hWin, pVar->tAllSk.nLeftSKID,pVar->tAllSk.nMiddleSKID,pVar->tAllSk.nRightSKID);

 

从颜色上我想你应该很清楚知道他们的对应关系了。

WdgBegin/ WdgEnd,参数一,widget ID,参数二,widget的名称。Widget里的写法和结构都可以像左右软键那样找到。

       从上面不难看出,通过WND_ID生成的结构WND_ID_t其实就是内部所有用到的结构的一个打包。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值