WEB开发网
开发学院手机开发Symbian 开发 symbian 中view与container 阅读

symbian 中view与container

 2010-05-19 18:31:00 来源:WEB开发网   
核心提示:开发symbian的GUI应用是有模板的,用Carbide C++的工程向导可以自动生成程序的基本框架,symbian 中view与container,不过可能与安装的SDK版本有关,我现在只能生成一个AppUi一个Container的常规模板(以前用 2nd FP3时还可以生成多个view多个container的视图

开发symbian的GUI应用是有模板的,用Carbide C++的工程向导可以自动生成程序的基本框架。不过可能与安装的SDK版本有关,我现在只能生成一个AppUi一个Container的常规模板(以前用 2nd FP3时还可以生成多个view多个container的视图模板)。

不管是哪一种模板,它们共同的部分是入口函数、Application和Document。即以下三个文件是所有工程都具有的:

1)有一个与工程同名的cpp文件,它只提供了两个全局函数,是程序执行的入口,负责创造Application。这个文件我们不用管它。

2)有一个以工程名+Application命名的类,派生于CAknApplication,它负责创建文档类并提供应用的UID。一般情况下它也不需要我们操心,但是因为它提供了一个函数OpenIniFileLC,如果我们需要在启动程序时加载ini文件中的配置,可以重载它。

3)有一个以工程名+Document命名的类,派生于CAknDocument,它负责创建Ui类,同样一般情况我们不管它,但是它也提供了一个函数OpenFileL,如果需要加载普通文件,也可以重载它。

下面来看看两种模板的不同点吧。

一. 基于CCoeControl的常规模式

这种模式的特点是一个AppUi类并且对应一个Container类。

它在上述三个文件以外,还有下面两个文件:

4)有一个以工程名+AppUi命名的类,派生于CAknAppUi,它主要的工作是负责用户接口(所谓的UI)并且创建Container类,所以它是我们关注的重点之一。

它最重要的成员函数是HandleCommandL,这个函数来自于CEikAppUi类,负责处理各种命名/事件。

有两个函数DynInitMenuBarL和DynInitMenuPaneL,如果需要动态更改菜单的项目,可以重载它们。

HandleKeyEventL函数则可以在需要自己处理键盘事件时重载一下。

此外,这个AppUi还提供一些比较常用的函数,比如:

Document() 可以获取Document对象指针。

Application() 可以获取Application对象指针。

StatusPane() 可以获取状态栏的指针。

Cba() 可以获取控制栏的指针。

5)有一个以工程名+Container命名的类,派生于CCoeControl,它负责内容的展示,也是我们关注的重点。

如果需要在界面上增加控件类类的东西,都是在这个类中实现,总的来说,它负责所有与界面展示相关的东西。

它有一个Draw函数,但是如果我们是通过控件来展示信息,则这个函数里的代码似乎与我们关系不大,除非我们的界面完全是靠画出来的。

1 2 3  下一页

Tags:symbian view container

编辑录入:coldstar [复制链接] [打 印]
赞助商链接