惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - Big Angel

N97 Firmware Update to V20 被PM了 如何使用CImageEncoder进行图片压缩转换 小说Symbian的签名 如何在S60 5th中模拟触摸事件 - Big Angel Carbide C++ 2.0 Released 如何向Symbian C++程序中添加多语言支持 说说Hakone MX Revolution大革命入手 不能要求自己太严格了 Lie to me不错 Google开始加大推荐手机软件的力度 诺基亚2009挑战赛和Ovi Store 微博客真的会流行么 如何升级Symbian Carbide C++的GCC编译器版本 QT Opensource Edition for Windows CE Installation with Visual Studio 2005 设计模式:浅谈行为模式State(C/C++ C#) Flickr WallPaper 红黑的宿命(米兰夺冠庆祝贴)
Symbian UI 架构分类
Big Angel · 2009-03-30 · via 博客园 - Big Angel

Symbian OS的UI架构主要分成三种:

1. 传统的Symbian系统架构

2. 基于对话框的架构

3. 视图架构

下面将分开讨论三种架构的特点和优缺点:

1.传统的Symbian系统架构

 Traditional Symbian OS Architecture

如图所示程序中框架类主要继承自Avkon Framework的CAknApplication, CAknDocument和CAknAppui,另外容器类继承自CONE的CCoeControl。

使用Carbide C++建立一个包含UI的工程,默认的配置中所使用的架构就是这个传统的Symbian系统架构。

其中,CAknApplication是S60应用程序的基类,主要存储应用程序的属性,比如,可以通过重写OpenIniFileLC()的方式存储.ini配置文件等。

CAknDocument为文档类的基类。

CAknAppUi负责处理各种事件,比如HandleCommandL()。

在CMyContainer中可以包含一个或多个控制控件,实现界面的交互,并负责窗体描画事件。

优点是:

 比较简单和清楚的框架,并且可以加入自定义的控制和交互,比较灵活。

缺点是:

 没有系统提供的视图的管理方式。

在UIQ中与上述类对应的类是:

CQikApplication,CQikDocument,CQikAppUi

2. 基于对话框的架构

Dialog Based Architecture

这种架构和第一种架构的区别是,使用了一个非模式窗体类CAknDialog来作为主窗体,窗体的设计可以在资源文件中定义,并且可以在不重新编译C++程序的前提下,通过改变资源文件的定义的方式,重新设计窗体。在实践中,这种架构的应用并不多。

3. 视图架构

 View Architecture

这种架构的应用最为广泛,在SDK中也有一个叫MyView的例子程序,结合上图仔细读懂这个例子,应该就会清楚很多。

与前两种架构所不同的是,视图类继承自CAknView,并且可以在运行时生成和添加多个视图,并由系统所提供的ViewServer进行管理,在制作稍微复杂一些,尤其是画面比较多的应用程序时,非常有用。但是在Carbide C++中并没有提供默认的工程向导模板,不过可以自己制作一个以方便将来使用。

需要注意的是,与前两种架构不同的是,CMyViewAppUi继承自CAknViewAppUi,他的功能同样是负责接收各种事件,并进行处理,而且可以在这个类中进行各种View的切换和更新激活视图。每个View有自己独立的ID,CAknViewAppUi利用这个ID在ViewServer中注册相关的窗体,并调用不同的窗体,这种架构更面向对象,并且每个视图中封装了属于自己的数据和方法,实现了更灵活的应用。