brewapplet框架(编辑修改稿)内容摘要:

} } // end AEEApplet_New } return (EFAILED)。 } 代码片断二、 HelloBREW 中 AEEClsCreateInstance() 的实现 这里定义了一个局部的初始化函数 HelloBREW_InitAppData(),用来执行用户数据的初始化,比如,把初始化 HelloBREW 的下列成员 DeviceInfo : AEEDeviceInfo。 *pIDisplay: IDisplay。 *pIShell: IShell。 HandleEvent()的实现 最后看, HelloBREW 的主体 —— 事件处理函数 HelloBREW_HandleEvent() 原型为: boolean HelloBREW_HandleEvent(HelloBREW* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam) 该函数通过 eCode 参数来决定消息的类型,然后做出相应的处理,所以它的主体是一个大的 switch 语句: switch (eCode) { // App is told it is starting up case EVT_APP_START: return (TRUE)。 // App is told it is exiting case EVT_APP_STOP: return (TRUE)。 // App is being suspended case EVT_APP_SUSPEND: return (TRUE)。 // App is being resumed case EVT_APP_RESUME: return (TRUE)。 case EVT_APP_MESSAGE: return (TRUE)。 case EVT_KEY: return (TRUE)。 // If nothing fits up to this point then we39。 ll just break out default: break。 } return FALSE。 代码片断三、 HelloBREW 中事件处理的主体实现 如果事件被处理,该函数返回 TRUE,否则返回 FALSE。 加入事件处理代码 为了简单起见,笔者就直接在 HelloBREW 刚被加载也就是在收到EVT_APP_START 事件的时候加入一些处理。 对这个事件的处理也只是显示“ Hello BREW”。 相应的代码如下: AECHAR szText[] = LHello BREW。 switch (eCode) { // App is told it is starting up case EVT_APP_START: IDISPLAY_DrawText(pMepIDisplay, // Display instance AEE_FONT_BOLD, // Use BOLD font szText, // Text 1, // 1 = Use full string length 0, // Ignored IDF_ALIGN_CENTER 0, // Ignored IDF_ALIGN_MIDDLE NULL, // No clipping IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE)。 IDISPLAY_Update(pMepIDisplay)。 return (TRUE)。 代码片断四、 HelloBREW 中 EVT_APP_START 事 件的处理 HelloBREW 的执行结果 Build 上面的 HelloBREW 工程,生成 ,然后用 BREW Simulator执行之,得到的结果如图五所示。 图五、 HelloBREW 在模拟环境中的执行结果 3 多个 Applet 实现 在同一个 Module 里 一个 Module 里可以有多个 Applet,那么如何实现呢。 由 图四 知, BREW 装载 Module 里的 Applet 时,都会通过 AEEClsCreateInstance() 函数,完成 Applet 的创建,我们可以在这个函数里面做些处理,根 据不同的AEECLSID,来创建不同的 Applet。 文件组成 在 ms vs60 环境中通过 BREW Application Wizard 创建一个 AppsInOneModule 工程, 并把工程的文件组织成 图六 所示。 图六、 AppsInOneModule 工程中的文件 文件中实现AEEClsCreateInstance() 函数,根据不同的AEECLSID,调用各自的构造函数来创建相应的Applet。 , 和 分别是各个 Applet的具体实现。 它们的内容大致都相同,如同HelloBREW 一样要实现事件处理函数,但是没有AEEClsCreateInstance() 函数,而是把它改成自身的构造函数 AppXXX_Constructor()。 因为这些 Applet 之 间可能要相互访问一些数据,把它们的类型定义放在一个统一的头文件里。 这个 Module 中要实现三个 Applet。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。