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來表示這個描述符。
附帶程序源碼