MTK开发快速诊断手册_09B

 

1 应用GROUP

MMI_ID mmi_frm_group_create (MMI_ID parent_id, MMI_ID group_id, mmi_proc_func proc, void *user_data)

MMI_ID mmi_frm_group_enter (MMI_ID group_id, mmi_group_enter_flag flag)

例如:

mmi_frm_group_create(GRP_ID_ROOT, APP_BARCODEREADER, mmi_barcodereader_cui_event_proc, NULL);

mmi_frm_group_enter(APP_BARCODEREADER, MMI_FRM_NODE_SMART_CLOSE_FLAG);

其中函数proc 会对各种事件作出处理,常见事件有

enum

{

    EVT_ID_GROUP_FIRST_ENTRY,

    EVT_ID_GROUP_ACTIVE,

    EVT_ID_GROUP_INACTIVE,

    EVT_ID_GROUP_DEINIT,

    EVT_ID_SCRN_DELETE_REQ,

    EVT_ID_SCRN_DEINIT

};

事件的结构为

#define MMI_EVT_GROUP_PARAM_HEADER    \

        MMI_EVT_PARAM_HEADER            \

        mmi_id sender_id;

#define MMI_EVT_PARAM_HEADER    \

        U16 evt_id;                 \

        U16 size;                   \

        void *user_data;

我们还可以为事件的结构加以延伸,加上我们自己的需要的事件的特性,例如:

typedef struct

{

    MMI_EVT_GROUP_PARAM_HEADER

 

    S32 result;                                                 /* save contact result: pls check PhbSrvGprot.h for error detail */

    U16 store_index;                                            /* saved contact's store index */

 

    U8 field_type;                                              /* last highlight field type */

} cui_phb_save_contact_result_struct;

具体使用举例如下:

cui_phb_save_contact_result_struct evt;

evt.evt_id = EVT_ID_PHB_SAVE_CONTACT;

evt.size = sizeof(cui_phb_save_contact_result_struct);

evt.user_data = NULL;

evt.sender_id = g_mmi_phb_save_contact_p->sg_id;

evt.result = result;

evt.store_index = store_index;

evt.field_type = g_mmi_phb_save_contact_p->highlight_type;

每个应用中,可能含有一个或者几个场景,如是要定义每个场景的ID,当有每个场景的事件发生时,执行相应的事件函数。

写到这里,我们可能想知道到底在什么地方,这些事件函数会发生。

mmi_frm_group_enter_ex(),//应用进入,通过注册按键

mmi_frm_group_close_ex(),//应用退出,通过注册按键

scenario_process_post_evt_ex(),//场景改变时

发送事件到proc函数

mmi_frm_scrn_send_to_parent(),//子节点向父节点发送事件,通过定时器回调函数L4CallBackTimer

mmi_frm_group_send_to_parent(),

会执行proc函数,执行相应事件。

 

几个重要的函数

void StartTimer(U16 timerid, U32 delay, FuncPtr funcPtr)//设置队列性定时器事件,发送定时器事件到事件队列里,MMI_TASK读取事件并执行

SetProtocolEventHandler(func, event);//设置协议事件,,发送协议事件到事件队列里,MMI_TASK读取事件并执行

MMI_FRM_INIT_EVENT(&event, event_id);//初始化事件结构

 

如果应用中下一个场景与上一个场景无关时,通过函数mmi_ret mmi_frm_scrn_close (MMI_ID parent_id, MMI_ID scrn_id)结束上个屏幕。

 

进入新屏幕:mmi_frm_create_new_screen()

 

mmi_imui_send_message

mmi_imc_send_message

mmi_input_box_msg_call_back_inline

mmi_input_box_msg_call_back_inline_text

 

//单行显示字符,光标,背景

gui_draw_single_line_one_line

gui_draw_single_line_character

gui_handle_single_line_cursor

gui_draw_single_line_highlight

 

//多行显示字符,光标,背景

gui_draw_multi_line_one_line

gui_draw_multi_line_single_character

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值