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;
}

(完)

目录
相关文章
|
3天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
271 116
|
18天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
12天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
663 219
|
5天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
350 34
Meta SAM3开源:让图像分割,听懂你的话
|
10天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1576 157
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
897 61
|
7天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
295 140