brew 界面交互方式

BREW中应用的事件处理主要是通过app HandleEvent,但是当应用所具有的界面非常多时,在app HandleEvent中如何根据当前app具体运行的界面来进行事件处理就相对复杂了。本人看了一些相关文档和代码,稍有体会,现与大家共同交流,探讨。

此时,可以采用以下3种方式:

1,可以采用状态机方式。 app的某个界面(或者几个相关界面)通常表明 app当前处于某个功能操作中,此时,我们可以在 app 的struct中增加一个state成员,用来表征当前app的 state(当前app 运行至何处),在app handleevet中根据当前的 state,将事件分发给具体的 state_HandleEvent处理。 示例代码见BREW SDK Example 中的WhiteBoard

2,采用Dialog方式。 将App的每一个界面都设计成一个Dialog,界面上的control作为 Dialog 的 Control存在。每当创建一个界面Dialog的同时,为该界面Dialog 注册一个Dialog HandleEvent,这样,每当进入某个App界面时,相应的界面Dialog被创建和激活。之后所有事件直接由界面上的 Control处理,Control不处理的事件由 Dialog HandleEvent 处理。当需要退出当前界面时,在 Dialog HandleEvent中Release Dialog,从而使得事件处理从新回到App HandleEvent. 示例代码为QCT Release 的6550平台的CoreApp应用处理机制

3,采用Form 方式,此时采用BUIT的 Form 方式,每一个界面对应一个Form,分别注册自己的 Form Handleevent,RootForm会自动将event分发给处于 top stack的Form. 示例代码请见BUIT 的calculator Example

4,自己创建接口体系,对应用的每个功能窗体实现一个接口,所有这些接口都继承于一个基窗体,比如IWINDOW,将其作为抽象接口。其他所派生的功能窗体接口均需要实现IWINDOW定义的vtbl的所有函数,特别的,应该具有IWINDOW_REDRAW, IWINDOW_HandleEvent这样两个接口函数。每个功能窗体接口同时具有自身的创建函数。这样在窗体间切换时,就相当于释放原先接口,创建新接口。而由于均派生至IWINDOW抽象接口,所以对于事件处理,重画窗体处理可以采用统一的IWINDOW_HandleEvent,IWINDOW_ReDraw的多态处理.示例代码请见BREW SDK Example中的 Mediaplayer

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值