BREW开发教程(4):BREW消息处理机制

BREW应用是基本消息驱动的,当Applet载入后,它能通过消息来获取用户输入,这是通过Applet的HandleEvent函数来完成的。

发送给Applet的消息

因为BREW是一个消息驱动的环境。它要求消息能够及时被处理。这意味着Applet必需快速处理消息然后返回。在BREW中,在消息处理中一定时间的延迟可能导致Applet的退出以保护设备的正常运行。

当BREW将消息发送给Applet后,Applet通过在事件处理函数中返回TRUE(表示处理),FALSE(表示不处理)。当Applet必需将该事件发送给其它的事件处理函数时(比如控件),可以直接返回该事件处理函数。

Apple接收三个与事件处理相关的参数,分别作为事件处理函数HandleEvent的第二、第三、第四个参数。下面是一个事件处理函数的定义:

boolean HandleEvent(IApplet * pIApp, AEEEvent eCode, uint16 wParam,

uint32 dwParam)

第二个参数为AEEEvent事件类型,指明了Applet收到主事件类型。比如:EVT_APP_START, EVT_APP_STOP以及告警事件,可以参考BREW API查看全部的事件类型。

第三和第四分别为16位和32位与事件相关的数据,这些值是与具体的事件相关的。

关于事件处理的几点提示

在开发一个Applet时,只考虑和处理Applet需要处理的那些事件,通常情况下,你可以忽略大多数的事件。比如,开发一个游戏,只需要上、下、左、右、选择键作为输入,而对应的键盘处理再接收到数字键时可以返回FALSE以使它们获得缺省的BREW事件处理。

某些事件只有在Applet指明需要接收这些通知时才会发送到Applet。而关键事件在任何情况是不能被Applet忽略的,如EVT_APP_START, EVT_APP_STOP。注意在某些特定状态下收到这些关键事件的处理方法,Applet必需能够保存数据及上下文。

键盘事件发送给Applet的事件是EVT_KEY,16位参数指明了键值,键值是以unicode的方式发送的。参考BREW API查看全部的键值及符号。

例如,按下数字键2时,16位短参数包含了与字符2对应的unicode值,这使得在Applet中可以处理一个击键事件,使用设备配置器,可以修改设备发送给Applet的键值,设备OEM制造商决定了目标设备的键值定义。

当一个按下或释放时,IShell将向处于活动状态的Applet发送异步事件,下面列出了一个Applet可以接收到的击键事件及其描述:

键盘事件描述
EVT_KEY_PRESS当按下键时Applet接收到此事件,参数为:

  • wParam:主键值
  • dwParam:修饰键标识
EVT_KEY_RELEASE当键被释放时Applet接收到此事件,参数为:

  • wParam:主键值
  • dwParam:修饰键标识
EVT_KEY在按下键或键被释放时发送,或者两种情况都发送,这取决设备制造商的选择,Applet应该在这个事件中处理键盘事件。因为不同的设备具体不同的键盘设置,在开发时应该在这些规范下编程。参数为:

  • wParam:主键值
  • dwParam:修饰键标识

BREW中处理Tab事件

在对话框中通过方向键来移动光标的方向取决于哪种控件具有焦点以及用户按了哪个方向(上、下、左、右)键。Tab方向,后面称为前移、后移Tab事件,取决于如何在代码和资源文件中如何设计。一种好的设计是将控件按其ID值大小顺序排列(从上到下,从左到右)。以这种方式对控件进行布局,当收到前移、后移Tab事件,光标将在控件以一种合乎逻辑的方式移动。在进行手工处理Tab事件最好也选择这种方式。

下面表格中的Menu控件发送EVT_CTL_TAB事件:

Menu控件发送Tab事件
Soft KeyUp = backward

Down = forward

MenuLeft = backward

Right = forward

ListLeft = backward

Right = forward

DateLeft = backward

Right = forward

TimeLeft = backward

Right = forward

Static(允许处理Tab事件时)在文本开头,Up = backward

在文本结尾,Down = forward

注意:如果光标在多行文本的最后一行最后一个字符位置,此时如果按向下键,则会在多行文本中插入一个换行符,如果光标在多行文件的最后一行但不是最后一个字符位置时,此时如果按向下键而且有一个Soft Key时,此时不会发送EVT_CTL_TAB事件,而Soft Key 将获得焦点。

本文档为开发者提供了开发 BREW 设备平台应用程序所需的 Binary Runtime Environment for Wireless™ (BREW™) 函数和数据结构的信息。 在本参考资料中 《BREW API 参考资料》的余下部分包括以下内容: BREW API 接口 按字母顺序列出 BREW 接口和函数。 助手函数 按字母顺序详列助手函数。 数据类型 按字母顺序详列 BREW 接口使用的数据结构。 每个函数的说明均提供了以下信息: 说明 函数用法的说明。 原型 一个调用结构的示例。 参数A 需要输入和返回的对象。 返回值 从函数调用返回的项目,包括多种类型、消息、值、结构和说明。 备注 帮助理解函数的用法、限和边界的特殊说明和附加信息。 副作用 (仅在适当情况下) 使用函数调用时函数表现的任何异常行为。 除非存在副作用,否则不显示该标题。 版本 引入此函数的版本。 另请参阅 相关函数或数据结构的交叉参考。 A 注意: 仅当参数表包含混合类型时,参数列表才显示 [in]、[in/out] 和 [out]。 如果表中都是输入参数,将省略 [in]。 BREW 继承函数 每个继承函数均链接至其基类。 以下是继承函数条目的一个示例。 IBITMAP_AddRef() 此函数继承于 IBASE_AddRef()。 详细信息 BREW 应用程序开发者可以得到相关的联机信息和支持。 请访问 BREW 网站了解详细信息: www.qualcomm.com/brew/zh/developer。 请求 BREW 的新功能 如果您在使用 BREW SDK 的过程中对它的功能有任何意见和想法, 欢迎您按如下地址给我们发送电子邮件: brew-request@qualcomm.com。 新功能反应小组将认真考虑您的每一个意见,并通过电子邮件尽快地给予您答复。 BREW™ 程序设计概念 本部分讨论以下 BREW 程序设计概念。 转至主题 学习 BREW SDK 的组件 BREW SDK 中包括的组件。 组件如何交互 如何配合使用下载 BREW SDK 后得到的各种组件和工具。 BREW SDK 目录结构 BREW SDK 中文版的组织方式。 使用小程序和模块 在 BREW 中如何使用小程序和模块编译应用程序 DLL。 还包括一些关于创建小程序和实例,处理小程序事件的主题。 BREW 开发指导原则 如何避免常见错误和缩短测试、调试和修改 BREW 源代码的时间。 创建新的应用程序 创建新 BREW 应用程序的方法。 还包括一些关于使用应用程序向导、处理特定语言资源和使用浮点运算的主题。 访问外壳服务 如何利用 IShell、IBase、IModule 和 IApplet 接口使模块和小程序可以访问外部服务。 事件处理概念 如何处理事件,包括切换事件。 在 EFS 中访问文件或 API 与桌面文件系统(例如 Windows XP)相比,如何在设备的 EFS 上运行应用程序。 监测进入的 SMS 消息 BREW 电话层如何监测进入的 SMS 消息(如 DMA 设备的 IS-637 SMS 消息)。 管理短时计时器和设备睡眠 如何处理设备睡眠模式和短时计时器。 开发屏幕保护程序 如何在 BREW 中创建屏幕保护程序,包括将应用程序注册为屏幕保护程序的过程。 扩展 BREW API 如何使用 BREW API 扩展自定义 BREW API。 从第三方应用程序调用 MobileShop。 如何向您的应用程序添加 MobileShop URL。 文件系统名称空间和 ACL 在 BREW 中如何处理文件系统名称空间和 ACL。 BREW 安全模式 BREW 如何管理设备上有问题的应用程序。 内容安全 如何确保安全处理从因特网、SMS 消息和其它外部信息源接收的消息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值