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。brewapplet框架(编辑修改稿)
相关推荐
使用USB键盘、 USB鼠标及 USB软驱。 该设置在 BIOS 启动过程中自动 启用。 启用该功能 后,控制转移到操作系统时仿真继续有效。 禁用该功能后在控制转移到操作系统时仿真关闭。 Pointing Device 指针设备:设置为 39。 SERIAL MOUSE39。 时外接串口鼠标启用并集成触摸板被禁用。 设置为 39。 PS/2 MOUSE39。 时,若外接 PS/2 鼠标
型 ( CH) 0~ 3=光标开始行 ( CL) 0~ 3=光标结束行 2 置光标位置 BH=页号; DH/DL =行号 /列号 3 读光标位置 BH=页号 CH/CL=光标开始 /结束行 DH/DL =行号 /列号 5 置当前显示页 AL=页号 6 屏幕初始化或上卷 AL=上卷行数; AL=0全屏幕为空白 BH=卷入行属性 CH/CL=左 上角行号 /列号 DH/DL=右上角行号 /列号 7
to design up to the brainstorming phase using a puter. Eased transfer of data to the CAD phase。 no need to digitize clay model data. o Allowed time consuming functionality and manufacturability tests
s 操作系统密码 启动密码 遗忘 Windows 的启动密码虽然不会影响系统的启动,但它会导致用户无法进入自己的个人设置,因此破解Windows 的启动密码以找回 “丢失 ”的 “个性 ”也是很有必要的。 为此,我们可删除 Windows 安装目录下的*.PWL密码文件(或者把 *.pwl改名)及 Profiles 子目录下的所有个人信息文件,然后重新启动 Windows
ach other openly and freely to exchange views and opinions. They can also set mon objectives. You should achieve this effectiveness by making use of uptodate technologies. For example you can set up
v. 革新 input n. 投入 insolvent adj. 无清 偿力的 installment n. 部分,分期付款 insure v. 给……保险,投保 insurance n. 保险 interest n. 利息,兴趣 interest rate n. 利率 interim n. 中期,过渡期间 intermittent production n. 阶段性生产 interview n