资料介绍
MTK平台开发总结
声明:前阶段进行了近两个月的MTK平台上层开发,由于缺乏技术支持,对于整个平台的
认识都是通过简略的文档和浅薄的经验摸索出来的。其间整理了一些文档。由于联发科
提供的PDF全部是英文,有些名词难以翻译准确,只能凭单方理解和嵌入式开发的词汇习
惯进行意译,还请谅解。系列文章均出自原创,肤浅可笑之处,望海涵。
(一)窗体的重画
通过观察可以发现,每个窗体模板都调用这样一个函数:dm_redraw_category_screen(
)。这个函数便是显示窗体的函数。它内部的实现是这样的:获得该窗体所包含的组件及
它们的属性,再根据组件的类型和属性,调用不同的接口,逐一绘制各组件。详细流程
如下图所示:
[pic]
由上面的流程可见,无论是窗体所包含的组件,还是组件的属性,都是根据模板ID获取
的。那么现在摆在面前的有两个问题:一、模板ID是如何传递到这个函数中的;二、模
板ID和窗体组件、组件的属性,是如何关联到一起的。 我们逐一解决这两个问题。
一、模板ID是如何传递到这个函数中的
模板ID,是ShowCategory..Screen()过程中,所显示的界面的编号,千万不要与
EntryNewScreen(scrID,…)
函数中传入的窗口ID相混淆。它们以“MMI_”为前缀,被定义在枚举型结构MMI_CATEG
ORY_ID_LIST中,又通过结构体dm_data_struct和它的全局结构体变量g_dm_data,在
应用程序中被广泛使用。先看看结构体dm_data_struct的定义:
typedef struct
{
S32 s32ScrId;
S32 s32Cat