s60平台下的一个程序===手把手教你
这份手册通过详细的展示给你怎么来写一个s60下的tetris来说明S60 SDK下的一些基本概念
。
STEP1 hello world
这个程序在SDK里有,
在group\目录下是一些工程文件:
bld.inf
s60text.mmp
step1.rss是资源文件。在这个事例中它包含有R_AVKON_SOFTKEYS_OPTIONS_EXIT这个软键
盘配置,效果就是手机的左边键是option,右边是exit。此外还有其他一些资源
step1.pkg 这个文件包含一些关于怎样创建*.sis文件的描述,*.sis是可以直接在手机上
运行的程序
在 inc\ 和src\目录下呢就是这个程序的源代码了,下面我简单的分析一下:
symbian平台下的程序和windows及unix下的程序有很大区别,windows及unix下的都从一个
main()开始,但是symbian下的却是被框架以一个dll的方式加载。当然啦,就象每个dll文
件一样,它是从E32DLL函数开始的,不过会返回的更快一些。
主框架先调用NewApplication()函数来得到一个CApplication对象,然后运用Avkon会返回
CApplication子类的一个对象。在我们的程序中那就是在s60testapplication.cpp中的
CS60TestApplication。在这里重写了两个函数:
第一个是AppDllUID,这个函数返回程序的UID。(每个程序都有一个唯一的UID,注意我们这
里的程序使用的是开发UIDs,是不能在发布版本里出现的)。
第二个函数是CreateDocumentL,这个函数创建一个CApaDocument对象。在我们的例子中就是
CS60TestDocument,一个CAknDocument的子类。
调用CreateAppUiL ,它创建了一个维护程序用户界面的对象,iAppUi=new(ELeave) CS60TestAppUi(this),就是
CS60TAppUi,在ConstructL函数中我们首先调用BaseConstructL函数,这个函数能够做一些
初始化对象的工作,象是从资源文件中加载软键/菜单配置等;然后我们创建
CS60TestAppView类的一个对象,CS60TestAppView是CCoeControl的一个子类。CCoeControl
对象是被画到屏幕上的一些控件,我们的控件会添满ClientRect(),比如在状态面
板和sotfkeys描述之间的空白。要是把ClientRect改成ApplicationRect()那程序就会覆盖
整个屏幕。调用AddToStackL()接收键盘事件。
AppUi同样还可以接收菜单的事件,当用户选择一个菜单命令时,HandleCommandL被调用来处
理传来的命令代码,这些代码都是在菜单的资源文件中已经定义了的。我们运行Exit和Hello
命令,会出现一个note。
在CS60TestAppView类中我们只是重写了一个函数:Draw方法,当视图需要重画的时候它会被
调用,在这里我们在屏幕上写出ClientRect(176*144)的大小,我们用TBuf来表示这个描述符。
第一次翻译文档,因为跟我一起学习的几位同学不习惯看英语资料所以我挑选出一些来翻译出来,贴来大家分享,同时我知道自己的英语也是菜的没的说,欢迎大家踊跃拍砖.里面肯定有好多的词语术语错误,欢迎大家指出来,希望和大家一起交流进步
原始地址 [url]http://www.newlc.com/article.php3?id_article=402[/url]
附带程序源码