BUIW初学——日程表SETFORM初探

简介: 根据我自己的理解,setform.c主要负责的工作就是日程表界面显示相关的内容,而逻辑实现部分则在working.c之中; 对于界面而言,其一是对于外观的修改,例如菜单的长度、文字的长度、对话框大小的设置等等;其二是更深入的部分,主要是相关按键及其他事件的处理工作。

根据我自己的理解,setform.c主要负责的工作就是日程表界面显示相关的内容,而逻辑实现部分则在working.c之中;

对于界面而言,其一是对于外观的修改,例如菜单的长度、文字的长度、对话框大小的设置等等;其二是更深入的部分,主要是相关按键及其他事件的处理工作。对于第一点我们了解了它就可以对界面的显示进行修改了;如果要对按键等功能设置进行更改的话则需在事件处理中进行。下面是一个创建日程表内容的界面创建过程,我们通过它来详细的了解步骤1。

static int SCH_Create_Schedule_Content(Sch_Setting * pMe,int16 ypos)
{   
    int ret = SUCCESS; 
    WidgetProp wp;
    IWidget *tmpWidget;
    WExtent we;
    WidgetPos wpos;

    pMe->pSchContImage =  ISHELL_LoadResImage(pMe->pShell, SCHEDULE_IMAGE_RESFILE,IDI_SCH_CONT);//载入内容ICON

     // 创建PROPCONTAINER接口实例
    ret = ISHELL_CreateInstance(pMe->pShell, AEECLSID_PROPCONTAINER, (void**)&pMe->pSchContPropContainer);

    ret += ISHELL_CreateInstance(pMe->pShell,AEECLSID_STATICWIDGET,(void**)&pMe->pSchContWidget);//创建static widget实例
    ret += ISHELL_CreateInstance(pMe->pShell,AEECLSID_IMAGEWIDGET,(void**)&pMe->pSchContImgWig);//创建image widget实例
    ISHELL_LoadResString(pMe->pShell,pMe->pMF->pApp->pSchedulesrFile,IDS_SCH_CONT,pMe->SchContBuf,SCH_TIME_BUF_LENGTH*sizeof(AECHAR));//载入“内容”二字
    IWIDGET_SetImage(pMe->pSchContImgWig, pMe->pSchContImage); //将图片指针与imagewidget关联
    ret += IWIDGET_SetROP(pMe->pSchContImgWig, AEE_RO_TRANSPARENT); //设置imagewidget属性1
    IWIDGET_SetFlags(pMe->pSchContImgWig, IDF_ALIGN_LEFT|IDF_ALIGN_MIDDLE);//设置imagewidget属性2
    IWIDGET_SetBorderWidth(pMe->pSchContWidget, 0);//设置static widget属性1

    IWIDGET_SetFlags(pMe->pSchContWidget, IDF_ALIGN_LEFT|IDF_ALIGN_MIDDLE);//设置static widget属性2

    IWIDGET_SetText(pMe->pSchContWidget,pMe->SchContBuf,FALSE);//设置static widget文字

    wp.bVisible=TRUE;//设置可见属性
#ifdef FEATURE_QTM10
 wp.prop = 1 ;     //不执行
 IPROPCONTAINER_Insert(pMe->pSchContPropContainer, pMe->pSchContWidget, WIDGET_ZNORMAL,&wp);//不执行
#else
    wp.prop = 2 ; //FLAG_IMAGE_WIDTH
    IPROPCONTAINER_Insert(pMe->pSchContPropContainer, pMe->pSchContImgWig,WIDGET_ZNORMAL,&wp);//插入imwig至PCONT
    wp.prop = 10 ;
    IPROPCONTAINER_Insert(pMe->pSchContPropContainer, pMe->pSchContWidget, WIDGET_ZNORMAL,&wp);插入stawig至PCONT
#endif

//将CONTPROPCONTAINER与一个widget类型的临时指针绑定,也就是说将其当做一个普通的widget
    ret += IPROPCONTAINER_QueryInterface(pMe->pSchContPropContainer, AEEIID_WIDGET, (void**)&tmpWidget);
    if (ret == SUCCESS)
    {

      //将该WIDGET放置于pXYContainer指向的container,达到显示的目的,前面几句代码作用是设置widget的属性
        IWIDGET_SetLayoutStyle(tmpWidget, LAYOUT_HORZ);
        we.height = MENU_ITEM_HEIGHT;
        we.width = CONTAINER_WIDTH ;
        IWIDGET_SetExtent(tmpWidget, &we);
        wpos.x=0 ;
        wpos.y= ypos ;
        wpos.bVisible=TRUE ;
        IXYCONTAINER_Insert(pMe->pXYContainer, tmpWidget, WIDGET_ZNORMAL, &wpos);//最后插入widget或者说是propcontainer
        IWIDGET_Release(tmpWidget);//释放临时对象, 注意代码的安全
    }
    HANDLERDESC_Init(&pMe->hSchContDesc, Sch_Setting_Cont_HandleEvent, pMe, 0);//调用事件处理函数
    IWIDGET_SetHandler(pMe->pSchContWidget, &pMe->hSchContDesc);//设置新的事件处理
    return ret;
}

(完)

目录
相关文章
|
11月前
|
小程序 程序员
情侣小程序2.0版本已提上日程
情侣小程序2.0版本已提上日程
71 0
情侣小程序2.0版本已提上日程
点名系统
点名系统
100 0
|
小程序
小李,提前约一下会议室和建日程并思考一下想要沟通的事情!
小李,提前约一下会议室和建日程并思考一下想要沟通的事情!
|
算法
每日一题冲刺大厂第二十天提高组 最大食物链计数
大家好,我是泡泡,给大家带来每日一题的目的是为了更好的练习算法,我们的每日一题提高组是为了有余力的同学准备的,让大家练到各种各样的题目,一年以后,蜕变成为一个不一样的自己!
124 0
LeetCode 训练场:1450. 在既定时间做作业的学生人数
LeetCode 训练场:1450. 在既定时间做作业的学生人数
117 0
LeetCode 训练场:1450. 在既定时间做作业的学生人数
|
移动开发 Java 关系型数据库
会议室预定-学习报告
会议室预定-学习报告
274 0
|
运维 Kubernetes Cloud Native
一份不大的救命文档,一场时间与生死的接力
一份文档,能成为照亮黑暗的灯塔,打开一条求生通道。
977 0
一份不大的救命文档,一场时间与生死的接力
辞职后的后续事情——档案移交、失业金等。
     辞职了,以前工作的时候多没有签过合同,辞职之后也就没有什么事情了,不过这次签了合同,交了一年半的保险,辞职之后呢也就有了不少的事情。      基本办完了之后才滤出来了基本步骤,一开始公司的财务和我说的时候我是迷迷糊糊的,只能走一步算一步,历尽“波折”之后终于走完了一大半。
1170 0
|
项目管理
艾伟也谈项目管理,项目经理成长日记(6)——对不上的帐
中午吃过了午饭,端着杯茶做在休息室里正稍稍休憩。公司内部特别开辟出一个空间,并装修成吧台,高脚转椅,微高的台面和酒吧里面的样子多少有点类似。不少人见过微软、google的office的专修格调,让多少人羡慕而又渴望。
1050 0
|
安全 数据中心 数据安全/隐私保护