您的位置: 嵌入式在线 > 技术中心 > Symbian > symbian入门系列 -- document对象分析

symbian入门系列 -- document对象分析

2008-02-26      嵌入式在线      收藏 | 打印

      【主要作用】

      1) 是app的data model。
      2) 在基于文件的app中,document提供了对于文件的访问(store/restore)
      3) 负责创建AppUI,从而可以提供修改document的基础,CreateAppUiL()负责创建application的appUI对象。

      实际上,document起到了一个中间层(intermediate layer)的作用。负责在appui和app model(engine)以及 file之间建立联系。


『AppUI』
----------------------- 『Document』
|
『model』 <-> 『file』

   【Document的管理】

1) OpenFileL()

这个函数的功能和app的资源文件中的TBUF段(segment)密切相关。

RESOURCE TBUF r_default_document_name
{
buf="";
}

这个segment决定了application关联的文件名。这里的文件名连同路径就作为参数传递给了

OpenFileL() 函数。这就使得application在启动的时候能够调用缺省的file,如果这个segment是

空的,那么缺省的document的名字和application的basename相同。这里需要注意的是series60只

允许存在一个缺省的file。

这个函数的返回值是CFileStore*,这是返回给application framework的指针,以方便

application framework把它传递给其他函数。

      【注】

      注意OpenFileL() 需要三个参数,其中文件名(TDesC& aFilename)和file server session

      参数(RFs& aFs) 应当是由application framework自动创建的。但是另外一个参数怎么确定的呢?

      2) NewDocumentL()

      这个函数是由application framework来调用,用于初始化一个default document file。

      【注?】

      这个函数是不是在资源文件没有文件名的情况下调用的?如果是这样,那么这个函数应当在OpenFileL()

      之前被调用?

      【解释】

      我在Document函数里面重载了函数NewDocumentL()和OpenFileL(),并分别加上了断点跟踪调试。发现:

      (#) 如果在资源文件中没有文件名的话,那么这两个函数都不执行。

      (#) 如果在资源文件存在文件名的话,那么首先执行的是OpenFileL()函数,但是这个时候的aOpen参数值是0,表明

      文件不存在或者文件没有打开。那么接下来调用NewDocumentL(),这个函数负责创建一个新的document file。

      接下来会调用document类的StoreL()函数。

      (#) 在晚上上述的步骤之后,再重新运行这个app,那么启动的时候会调用OpenFileL()函数,这个时候aOpen参数值是1,

      表明文件存在,那么接下来就调用ReStoreL()函数对文件进行读写。

      【对相关file的管理】

      document类提供了两个函数对文件的mode访问和修改。AppFileMode()和SetAppFileMode()。


       【对相关file的访问存取】

      document类提供了如下函数对file进行访问:
SaveL();StoreL();RestoreL();ExternalizeL();PrintL();

其中SaveL()会在app退出的时候被调用,用于保存app相关的数据到file中去。

SaveL() --> StoreL();

      而RestoreL()是在app启动的时候调用的,负责把文件的信息保存在document相关的model(engine)中去。

 

本文来源:    作者:
热点资讯(一周点击率)
热评博文
评一评已有 0 位网友对此文发表了看法。  我也来评一下

验证码:  看不清?换一张

 

快乐大本营

    无线时代来临,移动产业生态系统将发生一些根本变化。今日头条推荐“芯片是嵌入式4G技术的关键 产业生态系统将发生变化”。

    想了解嵌入式开发工具的市场情况吗?先来体验下我们的在线调查吧!填写调查问卷

工程师之星
朱礼昆
电子信息工程专业,擅长硬件编程
  • 胡菲菲  技术专长:嵌入式系统linux
  • 柳如峰  技术专长:模电,电源
热门招聘
论坛热贴