Chinaunix首页 | 论坛 | 博客
  • 博客访问: 846712
  • 博文数量: 190
  • 博客积分: 7021
  • 博客等级: 少将
  • 技术积分: 1752
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-17 19:26
文章分类

全部博文(190)

文章存档

2014年(9)

2011年(32)

2010年(149)

我的朋友

分类: 嵌入式

2010-06-11 19:11:45

与大多数面向对象的平台一样,BREW平台中的各种接口均继承自一个通用的接口。图7.2 列举出了一部分BREW接口的继承关系:

7.2 BREW接口继承关系

       7.2中列出了BREW接口中一部分具有继承关系的接口,这些列出来的接口只是BREW众多接口中的一小部分,不过确是最常用的一部分接口。从图的左边到右边,按照箭头方向依次是从基类接口到派生接口。派生接口的实例可以调用其基类接口定义的方法进行调用。所有的BREW接口均继承自IBase接口,用来进行最为基本的资源管理。IBase接口提供了两个方法IBASE_AddRefIBASE_Release。对于任何一个BREW接口的指针,我们都可以使用IBASE_AddRef接口来增加接口指针的引用计数;使用IBASE_Release接口减少接口指针引用计数,当接口的引用计数变为0之后,将释放这个接口所占用的资源。

       通过这种接口之间的继承关系,我们可以编写一些针对某基类接口的控制函数,从而可以实现对多种派生接口的控制。例如我们可以编写一个使用数据流接口IAStream的函数,这样我们为这个函数传入IFile或者ISocket接口都是合法的。我们还可以编写一个所有控件的设置矩形显示框的公用函数,在这个函数中我们可以传入任何一个继承自IControl的接口指针,然后调用ICONTROL_SetTect方法来设置控件的显示区域。

       最常用的一个BREW接口是IShell接口,它提供了一组系统级的方法,包括创建一个接口的实例等功能。例如,我们可以使用ISHELL_CreateInstance接口创建一个IDisplay接口指针的实例:

ISHELL_CreateInstance( pIShell,

                      AEECLSID_DISPLAY,

                      (void **) &pme->m_pIDisplay);

       如果我们花一些时间去浏览每一个BREW头文件的话,可以发现pIShell代表了一个IShell接口的指针,而pme->m_pIDisplay则是一个IDisplay类型的接口指针,通过在这个变量前面加上取址运算符“&”作为参数传入,我们就可以获得一个IDisplay型的接口指针了。最后,我们就可以通过这个接口指针使用IDisplay接口中提供的各种方法了。

       除了ISHELL_CreateInstance接口外,IShell接口中还提供了各种不同作用的接口,如设置闹钟和定时器的接口,启动和关闭应用程序的接口,创建和关闭对话框的接口等等。您可以查看BREWAPI文档查看其中的每一个接口,或者在本书的下一篇中您也能看见这些不同种类API的作用以及它们可能的内部机理(尽我所能的为您剖析)。

       除了IShell等接口之外,BREW还提供了一组助手函数,它们中有很多的实现是为了替换C标准库的函数。幸运的是,我们不需要为如何使用它们而感到担心,因为通常它们的形式与标准的C语言库相比就是大写的而已。一些常用的函数对比如下:

BREW助手函数

C语言标准库

ATOI

atoi

DBGPRINTF

printf

FREE

free

MALLOC

malloc

MEMCMP

memcmp

MEMCPY

memcpy

MEMMOVE

memmove

MEMSET

memset

REALLOC

realloc

SPRINTF

sprintf

STRCAT

strcat

STRCHR

strchr

STRCMP

strcmp

STRCPY

strcpy

STRDUP

strdup

STRLEN

strlen

STRNCPY

strncpy

STRSTR

strstr

       还有很多属于BREW专有的一些助手函数,不过这里没有列举出来,因为它们实在是太多了。由于BREW的字符串处理是以Unicode为基础的,因此除了ASCII字符串助手函数之外,它还提供了一组处理宽字节的字符串处理函数。对应于单字节的助手函数,这些宽字节的助手函数只需要增加一个W就可以了,如WSTRCPY代表宽字节字符的复制函数。在编写程序时,请确认我们的应用程序中使用的是BREW助手函数,而不是C语言的库函数,否则可能引起应用程序在BREW设备上的运行错误或者无端的增加程序的大小。

       对于那些已经学习过面向对象(如SmallTalkC++等)的人来说,需要注意的是BREW没有那些语言的一些特征。例如,BREW中所有的数据类型仅仅是数据类型而已,而不是一个对象。请不要用我们固有的面向对象的思维方式去理解BREW,否则会给我们的编码带来一些麻烦,尤其是在继承这个问题上,BREW的继承不是在语法上的,而是在二进制层面的一种继承。关于这一点在后面的章节中将会有详细的叙述,现在唯一需要注意的是不要用我们以前的知识去理解BREW的面向对象方式。

 

ps:以上内容来自 《深入BREW开发》 作者:焦玉海

阅读(1543) | 评论(0) | 转发(0) |
0

上一篇:BREW开发初步

下一篇:BREW的事件处理(1)

给主人留下些什么吧!~~