(1)如何确定在电话上显示应用程序名的字符限制?
不同的电话具有不同的显示特性,因此对此问题没有唯一答案。您可以通过比较应用程序名的宽度和显示宽度来确定应用程序名是否适合电话显示。
使用 IDISPLAY_MeasureText() 确定应用程序名字符串的像素宽度。使用 ISHELL_GetDeviceInfo() 确定屏幕的像素宽度。
BREW 是否支持动画?
BREW SDK 版本 1.0 支持动画 BMP。这是通过并列放置所有帧并使用带 IPARM-CXFRAME 标记的 IIMAGE_SetParm 指定每帧的宽度实现的。请参阅 Examples 目录中的 IIMAGE 示例。
BREW SDK 版本 1.1 增加了对 BREW Compressed Image (BCI) 动画的支持。BCI 文件包含一个或多个压缩的小图像,每个图像都有一个以毫秒指定的持续时间。
持续时间表示每一幅图像被该系列下一幅图像取代之前可显示的时间。您可以使用 BREW SDK 版本 1.1 随附的 BCI 编辑工具来创建 BCI 文件。有关详细信息,请参阅 SDK 随附的“使用 BREW Compressed Image 编辑工具”文档。
(2)如何按时间控制动画?
执行此操作的一种方式是使用 IImage 接口并设置动画速度 (IImage_SetParm)。下面是将动画速度设置为 750ms 的一个示例:
IIMAGE_SetParm(pMe->m_pIImage, IPARM_RATE, 750, 0);
您也可以使用计时器来触发图像显示函数。使用 ISHELL_SetTimer() 设置计时器:
ISHELL_SetTimer(pMe->a.m_pIShell, TIMER_RATE,
(PFNNOTIFY)(ManipulateBitmap), pMe);
TIMER_RATE ms 失效时,将触发 ManipulateBitmap 函数。在该函数中,您可以操纵图像。有关详细信息,请参阅 Brick Attack and Space 示例。
(3)文本输入的多次按键模式和 T9 文本输入模式有何区别?
在多次按键模式下,可以通过多次按键来指定一个字母。例如,要指定字母“r”,请按数字“7”三次。在 T9 模式下,每个字母仅需按键一次。T9 文本输入用于确定与输入数字序列匹配的最常用字。如果字不止一次与该序列匹配,则选择该最常用字并且能够滚动到下一个最常用字。
默认文本输入模式是多次按键。模拟器不支持 T9 文本输入模式。
(4)如何绘制特定颜色的线段?
IDISPLAY_DrawHLine() 和 IDISPLAY_DrawVLine() 始终绘制黑色线段。因此,将 CLR_USER_LINE 设置为所需颜色,然后调用 IDISPLAY_DrawHLine() 或IDISPLAY_DrawVLine() 无效。
这两个 IDISPLAY 宏的定义如下。要绘制除黑色外的颜色的线段,请使用宏定义中所含的代码并更改为所需填充颜色。
#define IDISPLAY_DrawHLine(p,x,y,len) \
{AEERect rc;SETAEERECT(&rc,(x),(y),(len),1); IDISPLAY_FillRect((p),&rc,
RGB_BLACK);}
#define IDISPLAY_DrawVLine(p,x,y,len) \
{AEERect rc;SETAEERECT(&rc,(x),(y),1,(len)); IDISPLAY_FillRect((p),&rc,
RGB_BLACK);}
(5)如何创建对话框?
1. 使用 BREW 资源编辑器创建对话框。也可以手动构造对话框,即在您的应用程序中创建数据结构,再定义对话框的内容。有关详细信息,请参阅《BREW 资源编辑器指南》文档和《BREW SDK 用户指南》中的“使用对话和控件”一节)。
提示:如果使用 bmp 文件,请确保可以支持 bmp 格式,而且 bmp 文件是一个有效的完全路径,全部采用小写形式。
2. 一旦创建对话框,它将有一个资源 ID 和资源文件(.bar 文件)。使用 ISHELL_CreateDialog() 创建对话框:
ISHELL_CreateDialog(pMe->a.pIShell, SAMPLEAPP_RES_FILE,
RESOURCE_ID, NULL);
// SAMPLEAPP_RES_FILE 为资源文件 (.bar file),
// RESOURCE_ID 为资源中指定的资源 ID
// 编辑器
3. 在应用程序处理程序函数中处理以下事件(至少返回 TRUE):
case EVT_DIALOG_START:
return TRUE;
case EVT_DIALOG_INIT:
return TRUE;
case EVT_DIALOG_END:
return TRUE;
4. 对话框对象不再需要时调用 ISHELL_EndDialog。
ISHELL_EndDialog(pMe->a.pIShell);
有关详细信息,请参阅《BREW SDK 用户指南》中的“使用对话和控件”一节。
(6)我的菜单比屏幕大。如何创建滚动条?
要绘制菜单的屏幕矩形(由 IMENUCTL_SetRect 指定)必须超出屏幕高度至少单个菜单项的高度。否则,菜单项将被剪切且不显示任何滚动条。
(7)如何将图像添加到 IMENUCTL 的项目中?
对于 CtlAddItem 结构,可以使用 IMENUCTL_AddItemEx 方法。请参阅 Examples 目录中的 IMENUCTL 示例。
(8)是否可以从与我的文本控件相关的软键菜单中删除多次按键项目?
可以。您可以按照下述步骤将其删除:
使用 ITEXTCTL_SetSoftKey() 将软键菜单与您的文本控件关联起来
调用 IMENUCTL_DeleteAll() 来删除多次按键项目
使用 IMENUCTL_AddItem() 添加项目
(9)是否可以获取/操纵设备的调色板信息?
不可以。调色板由生产商进行硬编码,随设备不同而不同。
是否可以直接修改显示缓冲区? 不可以。BREW 无法访问这些缓冲区,而且显示数据使用生产商的专有格式存储。