积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库
  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 嵌入式软件 >> Symbian
  相关分类: LINUX | WINCE | UC/OS | Bootloader | 下载 | VXWORKS | 网络协议 | JAVA | 汇编 | 驱动设计 | Symbian | XP Embedded | Nucleus | 新产品 | 相关文章 | 综合技术 | 应用论文 |
symbian 入门系列 -- document对象分析
 
作者:未知   来源:本站原创    点击数:1398   更新时间:2007-11-20
您可以添加到网摘 让更多人关注此文章:

    

Document分析

【继承关系】

--------------------------
CAknDocument -> CEikDocument -> CApaDocument
--------------------------

【主要作用】

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)中去。

 



相关文章
· Android、Symbian和OSX,谁将称王智能手机?[213]
· 传Nokia欲放弃Symbian推广Maemo平台[230]
· Symbian 9.5发布,可支持ARM Cortex-A8内核[444]
· 三星同意将Symbian股份出售给诺基亚[558]
· More firms endorse Symbian Foundation[1104]
热门评论排行
·ARM嵌入式系统基础教程(N
·8051单片机C语言彻底应用
·手把手学单片机20个例
·DSP从入门到精通全集
·ARM处理器应用开发4步骤

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
2010“毕昇杯”总决赛在京胜利召开
2010TI Cortex
DM6437达芬奇及VLIB算法培训
2010年ARM Cort
2010年(7.26-8.1)达盛科
意法半导体(ST)推出微型数字温度传
ARM确认Cortex-A9继任者:
存储器市场高涨 引发全球前
江西省2010年大学生(达盛杯)电子
分析师:今年半导体产业成长率冲破30
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
2010年“毕昇杯”总决赛获奖...
ARM Cortex-M3 四...
深思ARM Coertex-M...
单片机发展趋势...
物联网(The Interne...
关于TI M3 jtag防锁死...
2010年“毕昇杯”全国电子创...
2010年毕昇杯全国电子创新设...
EPM7128A/AE 与 E...
Protel 覆铜露洞。...

 
赞助商 [更多]
 
ICP许可证号:[粤 05056597]
联系电话:010-82564899-207 传真: 010-82564899-233

版权所有 Copyright © 2006 嵌入式技术网