這份教學並不是教大家如何寫程式, 而是告訴大家如何找到相關的應用程式, 進而開發一個新的程式 :P, 裡面約有 80% 都是自已摸索出來的, 所以若是觀念上有錯誤的話, 請麻煩指正, 謝謝 
========================================== 準備道具: 1. Metrowerks CodeWarrior (不一定要有, 但若是想在電腦上模擬執行的話需要它) 2. Symbian SDK 3. UIQWizard
========================================== 必逛網站 (排名不分先後): 1. sonyericsson.com/developer" target=_blank>http://www.sonyericsson.com/developer (免費註冊後可下載 SDK 等等的文件) 2. http://my-symbian.com/forum (裡面的 C++ 討論區) 3. http://renegade.w3xs.com/droll.htm (SMan 作者網站) 4. http://www.newlc.com/ (裡面的 C++ 討論區) 5. http://www.yipton.demon.co.uk/ (SCap, EMame 作者網站) 6. http://www.paw-print.net/symbian/index.php (一個英文的 UIQ 基本寫作教學)
========================================== 基本手續: 首先, 最重要的就是先去下載 SDK 了, 目前最新的版本為 2.1 版, 你可以到sonyericsson.com/developer/images/tool_uiq2.1_sdk_winscw_candidate_2.zip" target=_blank>這裡下載 (225MB), 然後全部安裝 (C++, Java, Perl 等等).
為了寫程式的方便, 這時就使用 UIQWizard 來幫我們建立一個範本, UIQWizard 是用 perl script 寫成的, 所以在安裝 SDK 時記得要勾選 perl. 將 UIQWizard.zip 的檔案解壓縮到 C:\, 然後到 DOS 下面輸入 createProject.pl 後, 它會要求輸入 [軟體名稱] 和 [UID], 之後, 它便會在 C:\ 建立一個 C:\軟體名稱 的目錄...
.cpp 的檔案存於 \軟體名稱\src 裡, .h 檔存於 \軟體名稱\inc 裡...
若要 compile, 則到 \軟體名稱\group 裡執行 c.bat, 它便會將程式 compile 順便包裝成 .sis 檔...
Codewarrior 對我而言只是用來測試 compile 結果和執行Emulator 用的, 不過為了節省安裝到手機上測試的時間, 建議裝了它, 然後利用它的 File -> Import Project From .MMP file 功能, 將 \軟體名稱\group\軟體名稱.mmp 匯入 Codewarrior, 這樣便可以利用 codewarrior 這個 IDE 編寫、測試程式, 用 c.bat 來包裝軟體...
我知道這份說明寫的很爛, 有任何問題的人儘量發問, 我再補充 :P (很多東西需要講的很詳細, 我希望是等到遇到問題時再補充, 這樣就不用怕打了沒人看了 :P)
我這裡附上 UIQWizard.zip
其他的檔案 (SDK, Codewarrior) 可以到 sonyericsson.com/developer 裡面找的到, 不過記得先註冊(免錢的), 裡面所有的功能(討論版、文件)都需要登入後才能翻閱 
========================================== 如何開始? 當你將基本的設定都設好後, 下一步當然是開始寫程式了, UIQ 的主要程式介面可以經由 .rss 檔案做定義, 建議參考 SCap, SMan, 以及UIQWizard 的範本來開始, 它們都已經大概的介紹如何利用 rss 檔案建立選單、Dialog 等等.
我這裡也粗略的講一下 SCap 這個程式的原始碼, 這樣對那些第一次寫 Symbian UIQ 程式的人不會花太多時間在研究程式碼上面 
在 group\SCap.rss 裡: MENU_ITEM { command=EEikCmdAbout; txt="About"; }
看了大家大概就了解這是一個選單的定義, 顯示的是 "About", 而執行的指令為「EEikCmdAbout」, EEikCmdAbout 則需要在 SCap.hrh 裡面下定義 (詳細說明請參考 SDK 的 » UIQ SDK » C++ » Source file description » How to define command IDs 部分), 當 SCap 程式執行, 並點擊 About 這個選項時, 程式會傳送連結 About 這個選單的指令 (EEikCmdAbout) 去 HandleCommandL (SCap.cpp) 裡, 而在這個 Function 裡, 你就要定義當 About 點擊下去時, 會執行什麼樣的指令:
case EEikCmdAbout: DisplayAboutDialogL(); break;
所以當 About 點擊下去, 它會去執行 DisplayAboutDialogL() 這個 function  換句話說, 指定一個指令給選單的項目, 然後當點擊時, 它會跑去 HandleCommandL 裡找該指令, 並執行該指令要跑的東西... (說的好像有點!@#$%^ :P)
一個選單的處理程序就是這樣了, 剩下的可能就要請大家自已摸索了(太多了說不完, 而且說的又不一定是正確的觀念 :P ), 建議大家可以先好好的研究一下如何寫 .rss 檔的定義, 相信若是了解如何的去建立介面, 剩下的部分我想懂如何寫程式的人都知道該怎麼做了 :P
|