让BREW说“Hello World”
技术与开发
在上期介绍了BREW开发平台的搭建以及BREW示例程序的使用,大家已经完全学会了吧!是不是有一种想马上进行开发的冲动?这期我们将踏入BREW 编程之旅,用VC++编写第一个BREW程序“Hello World”,该程序是初学者入门必修的第一课,希望大家仔细阅读。
BREW程序一般由以下3部分组成:
* 应用程序模块:作为一个独立的Windows DLL文件开发,每个模块可以包含一个或多个小程序。
* MIF文件:这是每一个BREW应用程序必不可少的,其中存储了该模块的详细信息,这些信息包括支持的接口类、支持的Applet类以及Applet的标题图标等内容。
* 资源文件:为应用程序提供字符串、图像和对话框等资源。将特定语言和特定设备的数据保存在资源文件中,可以实现创建应用于各国(地区)语言和各类设备的应用程序版本。
下面,我们就来具体讲解程序的制作。
1.创建“Hello World”工程
首先,运行VC6.0(图1),执行菜单命令“ File→ New”,调出“New”对话框,选择“Projects”属性项中的“BREW Application Wizard”。然后,在“Project name”中填入工程名“firstapp”(由于示例程序里边已经有了一个“helloworld”,我们的新程序就取名为firstapp)。

小提示:BREW文件的命名有严格的要求,例如不支持大小写混合、必须使用字母作为开头、至少要包含一个字母、不能全部是数字命名等等。
接着,在“Location”中定位到“examples”目录并点击“OK”,由于本例很简单,在弹出的对话框中一路点击“Next”即可。
2.配置“Hello World”的MIF文件
第一步: 打开MIF编辑器,在Applets选项卡中点击“新建”按钮,弹出“Specify BREW Class ID”对话框。
第二步: 因为每个BREW程序都必须有唯一的Class ID,所以在“Class Name”中输入程序的名字“firstapp”, 然后在下面的“Generate New”选择框里选择“Locally”,表明暂时使用自定义的Class ID来标示程序,方便开发调试。这里可以输入任意数字,但当程序发布时就需要向高通申请唯一的ID。然后单击“OK”保存包含Class ID的文件到程序的所在目录下。
第三步: 在“Applet Type”中选择程序类型“Tools”,在“Graphics”中选择手机UI显示的图标,这里三个都要选择(图2),又选择菜单“Build”,生成firstapp.mif文件到“examples”目录下。需要注意的是,MIF文件名必须和工程名一样。

至此,BREW的程序框架就生成了,我们接下来的编码就在程序框架firstapp.c中完成。
3.编写“Hello World”代码
打开firstapp.c文件,可以看到向导已经为我们生成了大部分代码,下面就只介绍需要修改的部分。程序的目的是在手机屏幕的中央显示“Hello World”字样,最简单的方法就是在程序启动的时候执行显示操作。
小提示:由于BREW编程采用的是VC++,跟在电脑上用的VC++基本语法都是通用的,只要学会了在手机上用BREW编程,到电脑上用VC++编程是非常容易的。
因为BREW是基于事件驱动的, 任何一个BREW 程序的运行都是通过一个叫HandleEvent的函数接收事件而运转的。而在BREW应用程序启动后,第一个收到的将是EVT_APP_START事件,所以我们就在这个事件中编写代码,找到firstapp_HandleEvent函数,编写如下代码:
static boolean firstapp_HandleEvent (AEEApplet * pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
//需要显示的字符串
AECHAR szText[] = {'H','e','l','l','o',' ','W','o', 'r', 'l', 'd', '\0'};
switch (eCode){
case EVT_APP_START:
// 在屏幕上绘制文字
IDISPLAY_DrawText(pMe->a.m_pIDisplay,
AEE_FONT_BOLD,
szText,
-1,
0,
0,
NULL,
IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
//刷新屏幕,显示文字
IDISPLAY_Update (pMe->a.m_pIDisplay);
//表示程序启动成功,可以处理其他事件
return(TRUE);
case EVT_APP_STOP:
return(TRUE);
default:
break;
}
return(FALSE);
}
通过代码我们可以看到,BREW程序与在电脑上运行的VC++程序有如下区别:
* HandleEvent函数相当于普通VC++程序的消息处理函数,所有的操作都是通过在这里接收事件来处理。
* BREW程序最后是在BREW设备下运行,不能使用标准的库函数,必须使用BREW API,比如IDISPLAY_DrawText,具体API可以查看SDK附带的文档。
4.编译代码显示结果
代码编写完后,我们就可以在BREW模拟器中运行编译程序了。首先按快捷键F7编译程序(图3),然后按快捷键“Ctrl+F5”调出执行文件对话框,在“Executable file name”处选择“C:\Program Files\BREW 3.1.5\sdk\bin\ BREW_Simulator.exe”。然后点击“OK”,运行程序即可完成操作。

小提示:如果在模拟器中没有看到firstapp程序,可能是如下原因:一是VC工程设置中生成DLL的位置不是在 ...\examples\firstapp\目录下。执行“ Project → Setting →Link →Output file name ”命令,直接改成firstapp.dll或者./firstapp.dll即可。二是MIF文件损坏或格式不对,使用其他格式覆盖当前MIF即可解决这个问题。
到现在为止,我们已经知道了BREW程序的创建过程和基本框架,下期将介绍BREW编程的常见错误和基本的代码调试方法。