第一篇:Symbian UI 程式架構
Symbian UI 程式的架構基本上是統一的。大家隻要學習一種簡單的架構就可以進行大部分的Symbian開發了。我這裡先介紹一個概念。
1.1 MVC 架構
Symbian 基本上使用MVC架構來搭建控件。Symbian UI程式設計主要講究的也是如何使用控件。而No kia沒有做好的一個方面就是有關UI
Control的幫助太少了。SDK提供的幫助裡面根本就沒有資源檔案的寫法。這一張裡面我會介紹一些控件例如Dialog,Text Listbox等等資源文
件的寫法。同時也會告訴大家應該到SDK的哪裡才能找到這些資源的描述。
但是首先,我先介紹一下MVC架構。MVC并不是個新東西。他是Model - View - Control的縮寫。在以前smalltalk中就已經開始用了。其主要的
想法是在構造類的時候把顯示,控制以及模型分開。Symbian對其作了小的改動。在Nokia提供的Series 90控件組(就是CKON,以後我再提CKON
的時候大家要知道指得是S90的控件)中Model主要用來存儲資料,以及封裝對資料的操作。也就是對于對象實體的操作。View當然是負責顯示
。Control被抽象成一個或多個純虛類(Mixin)其它對象通過重寫虛函數來得到對象内部的狀态以及控制對象。Series 90的Text Listbox類
CEikTextListBox很好的說明了這個構架。比如你可以調用CEikTestListBox中的Model()函數得到一個Model的指針,然後你就可以通路其中的
CDesArrayFlat數組了。
1.2 Symbian的工程檔案
1.2.1工程引導檔案bld.inf
這個東東其實就是一個腳本,它告訴Build環境在做Build之前需要準備或知道一些什麼東西。最普通的
一種寫法是:
PRJ_MMPFILES
project.mmp
這是告訴Build環境:你馬上要處理的工程檔案名字叫project.mmp。大家如果做比較複雜的程式可能需要同時Build所有的庫,那麼就在這裡把
你所有需要Build的工程都列出來:
PRJ_MMPFILES
project.mmp
project_lib1.mmp
project_lib2.mmp
另外的一個常用的标記是PRJ_PLATFORMS這個東東告訴編譯環境,以下的這些平台(Targets)是需要編譯的。你可以在這個标記的下一行列出
需要的平台例如:
PRJ_PLATFORMS
WINS ARMI WINSCW
或者直接用
PRJ_PLATFORMS
DEFAULT
注意,如果你不作PRJ_PLATFORMS這個标記其效果等于PRJ_PLATFORMS DEFAULT,是以這個不是必須
的。
第三個常用标記是PRJ_EXPORTS這個東西告訴編譯環境在編譯之前需要把哪些檔案先拷貝到指定位置。我舉個簡單的例子大家就知道什麼意思了
。比如你的工程中需要include一個第三方的*.inl的檔案,那麼如果編譯之 前這個檔案不存在就會編譯不過。你可以這麼寫:
PRJ_EXPORTS
./nk_set.inl /epoc32/include
那麼在你編譯的時候,一個Perl腳本會先把你工程目錄下的nk_set.inl檔案拷貝到/epoc32/include目錄下,然後再 編譯工程。
大多數工程隻要用這三個标記就可以了。還有一點小技巧這個bld.inf檔案中是可以寫#if #else 等等東西的。
比如:
#if defined(WINS)
..... 注意沒有{}
#else
.....
#endif