BREW开发教程(6):BREW “Hello,World!”应用示例

本文详细解读了BREW应用开发中的Hello, World!示例,包括头文件引用、事件处理函数实现及关键代码行解释。帮助开发者理解BREW SDK的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

几乎所有的开发语言教程都是以”Hello,world”应用程序作为第一个例子。“Hello,world!”例子显示了BREW API最基本的使用方法。

注意:下面的示例代码仅仅是用来显示BREW API的基本用法,这个程序可能并不能通过TRUE BREW测试,这是因为这个示例程序并不完全。

1.   #include “AEEAppGen.h” // Applet helper file
2.   #include “helloworld.bid” // Applet-specific header that
3.   // contains class ID
4
5.   static boolean HelloWorld_HandleEvent(AEEApplet * pme, AEEEvent
6.   eCode,uint16 wParam, uint32 dwParam);
7
8.   // Applet loading function
9.   int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule *
10.   pMod,void ** ppObj)
11.   {
12.   *ppObj = NULL;
13
14.   if(AEEApplet_New( sizeof(AEEApplet), // Size of our private
15.   // class
16.   ClsId, // Our class ID
17.   pIShell, // Shell interface
18.   pMod, // Module instance
19.   (IApplet**)ppObj, // Return object
20.   (AEEHANDLER)HelloWorld_HandleEvent, // Our event handler
21.   NULL)) // No special “cleanup” function
22.   return(AEE_SUCCESS);
23
24.   return (EFAILED);
25.   }
26
27.   // The event handling function
28. static boolean HelloWorld_HandleEvent(AEEApplet * pMe, AEEEvent eCode,
29.   uint16 wParam, uint32 dwParam)
30.   {
31.   AECHAR szText[] = {‘H’,'e’,'l’,'l’,'o’,’ ‘,’W',’o', ‘r’, ‘l’, ‘d’,
32.   ‘\0′};
33
34.   switch (eCode){
35.   case EVT_APP_START:
36.   IDISPLAY_DrawText(pMe->m_pIDisplay, // Display instance
37.   AEE_FONT_BOLD,// Use BOLD font
38.   szText, // Text – Normally comes from
39.   // resource
40.   -1, // -1 = Use full string length
41.   0, // Ignored – IDF_ALIGN_CENTER
42.   0, // Ignored – IDF_ALIGN_MIDDLE
43.   NULL, // No clipping
44.   IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
45.   IDISPLAY_Update (pMe->m_pIDisplay);
46
47.   return(TRUE);
48
49.   case EVT_APP_STOP:
50.   return(TRUE);
51
52.   default:
53.   break;
54.   }
55.   return(FALSE);
56.   }

上面的示例代码使用了BREW SDK提供的Applet桩代码文件(AEEAppGen.c和AEEModGen.c)。这个文件将和上面的代码一起编译和链接。这些桩代码提供了支持IModule和IApplet接口所必需服务接口,一般在所有的BREW应用开发时都必需包含这两个文件,这使得开发人员只需要简单的关注通过HandleEvent函数传给Applet事件的处理。开发都可以选择直接实现IModule和IApplet接口以满足实际需求。

在例子中,Applet在接收到EVT_APP_START事件之后显示”Hello,World!”,这个消息是在BREW启动Applet通过Applet的HandleEvent函数发给应用程序的。这个例子显示“Hello,World”并通知显示设备刷新屏幕。

如果熟悉Window SDK编程的话,上面的例子和Window SDK编程方法基本类似。也非常容易掌握BREW的开发方法。

对例子代码进行逐行说明下面:

行号 说明
前面两行为Hello,world应用所使用的头文件,AEEAppGen.h中定义了Applet函数。
2Helloworld.bid包含了Applet唯一的ClassID AEECLSID_HELLOWORLD.这个Class Id是通过高通公司接口注册过程得到的。
5-6为Applet的事件处理函数HandleEvent的事先声明。
9-25这几行代码是所有模块都必需提供的载入代码,相当于程序的入口点。Hello   world应用是作为动态库DLL被模拟器调用的,这种模式是设备上亦是一样的。函数AEEClsCreateInstance()的作用是为AEEApplet结构创建一个实例,这个结构通过AEEApplet_New()函数来创建,并设定应用特定的事件处理函数。第一个参数为Applet 数据结构的大小,因为在这个应用中没有其它变量,所以直接使用了AEEApplet数据结构大小。可以参见其它例子来了解如果使用AEEApplet_New()。
28-56HelloWorld_HandleEvent()函数处理Applet收到的所有事件,主事件类型,子事件类型以及事件相关数据通过参数eCode,wParam,dwParam来传递。

34行的switch函数查看Applet收到主事件类型。

如果事件是EVT_APP_START,则Applet收到了启动消息。

IDISPLAY_DrawText()用于在屏幕中间显示字符串”Hello,world!”,标识IDF_ALIGN_CENTER 和IDF_ALIGN_MIDDLE用于在水平和垂直方向将字符串居中。

IDISPLAY_Update()用于刷新屏幕。

当用户按下设备上的”END”键时,Applet将收到EVT_APP_STOP事件。当Applet收到此事件时,需要做Applet相关的清除工作。比如保存文件,释放内存等。因为这个示例没有分配内存,所以没有特别的清除工作需要完成。所以可以忽略这个事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值