symbian 程序结构分析
DESCRIPTION
Symbian 程序结构分析. 主要内容. 程序结构 工程组织 应用图标及启动 资源文件 打包图片 打包文件格式 多视图程序. 程序结构. S60 应用框架 MVC 设计模式. 程序结构. GUI 应用运行分析 代码分析 应用类 文档类 AppUi 类 启动代码 运行分析. 工程组织. bld.inf PRJ_PLATFORMS WINSCW ARMV5 GCCE PRJ_MMPFILES gnumakefile icons_scalable_dc.mk gnumakefile ..\help\build_help.mk - PowerPoint PPT PresentationTRANSCRIPT
Symbian程序结构分析
主要内容程序结构工程组织应用图标及启动资源文件打包图片打包文件格式多视图程序
程序结构S60 应用框架MVC 设计模式
Application Document AppUi View
Model
程序结构GUI 应用运行分析
代码分析应用类文档类AppUi 类启动代码
运行分析
工程组织bld.inf
PRJ_PLATFORMSWINSCW ARMV5 GCCE
PRJ_MMPFILESgnumakefile icons_scalable_dc.mkgnumakefile ..\help\build_help.mkExam0303NewGui.mmp
工程组织工程组织文件 *.mmp
TARGET Exam0303NewGui_0xE2F675DA.exeTARGETTYPE exeUID 0x100039CE 0xE2F675DA
SOURCEPATH ..\srcSOURCE Exam0303NewGui.cppSOURCE Exam0303NewGuiApplication.cpp
工程组织SOURCEPATH ..\data
START RESOURCE Exam0303NewGui.rss HEADER TARGET Exam0303NewGui_0xE2F675DA TARGETPATH resource\apps END //RESOURCE START RESOURCE Exam0303NewGui_reg.rss TARGET Exam0303NewGui_0xE2F675DA_reg TARGETPATH \private\10003a3f\apps END //RESOURCE
工程组织USERINCLUDE ..\incUSERINCLUDE ..\helpSYSTEMINCLUDE \epoc32\include
LIBRARY euser.libLIBRARY apparc.libLIBRARY cone.lib
LANG SCVENDORID 0SECUREID 0xE2F675DACAPABILITY ReadUserData
应用图标及启动 注册表资源文件
1. #include "Exam0303NewGui.hrh"2. #include "Exam0303NewGui.rls"3. #include <appinfo.rh>4. #include <Exam0303NewGui_0xE2F675DA.rsg>5. 6. UID2 KUidAppRegistrationResourceFile7. UID3 _UID38. 9. RESOURCE APP_REGISTRATION_INFO10.{11.app_file="Exam0303NewGui_0xE2F675DA";12.localisable_resource_file = qtn_loc_resource_file_1;13.localisable_resource_id = R_LOCALISABLE_APP_INFO;14.15.embeddability=KAppNotEmbeddable;16.newfile=KAppDoesNotSupportNewFile;17.}
应用图标及启动在程序资源文件中定义下面的资源
RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info{short_caption = qtn_caption_string;caption_and_icon = CAPTION_AND_ICON_INFO{caption = qtn_caption_string;number_of_icons = 1;icon_file = "\\resource\\apps\\Exam0303NewGui_0xE2F675DA.mif";};}
打包图片 打包矢量图片
使用 *.mk 文件 例子 Icons_scalable_dc.mk
1. ifeq (WINS,$(findstring WINS, $(PLATFORM)))2. ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\Z3. else4. ZDIR=$(EPOCROOT)epoc32\data\z5. endif6. 7. TARGETDIR=$(ZDIR)\resource\apps8. ICONTARGETFILENAME=$(TARGETDIR)\ImiChatApp.mif9. 11. ICONDIR=..\gfx12. ... ...13. RESOURCE : $(ICONTARGETFILENAME)14. 15. $(ICONTARGETFILENAME) : $(ICONDIR)\qgn_menu_ImiChat.
svg16. mifconv $(ICONTARGETFILENAME) \17. /c32 $(ICONDIR)\qgn_menu_ImiChat.svg18. ... ...
资源文件程序资源文件格式
资源文件头资源文件体
资源文件 资源文件头
// 代码块 1 资源标识符NAME EXAM // 4 letter ID// 代码块 2 INCLUDES#include <eikon.rh>#include <avkon.rsg>
// 代码块 3 定义资源文件签名 , 这个资源应该是空的RESOURCE RSS_SIGNATURE
{}
// 代码块 4 缺省的文档名称RESOURCE TBUF r_default_document_name
{buf="EXAM";}
// 代码块 5 定义应用默认的菜单和 CBA 栏按钮RESOURCE EIK_APP_INFO
{menubar = r_menubar;cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;}
资源文件资源文件体
RESOURCE STRUCTNAME res_name{
resource-initializer-list}
资源文件编译资源文件
资源文件定义菜单
1. RESOURCE MENU_BAR r_menubar2. {3. titles =4. {5. MENU_TITLE { menu_pane = r_menu;
}6. };8. }9.
资源文件 定义菜单
10. // r_menu11. // Menu for "Options"12. RESOURCE MENU_PANE r_menu13. {14. items =15. {16. // added the new Options menu command here17. MENU_ITEM18. {19. command = ECommand1;20. txt = “Message”;21. },22. MENU_ITEM23. {24. command = ECommand2;25. txt = qtn_command2;26. },27 . … …28. };29. }
资源文件 处理菜单命令
void CExam0303NewGuiAppUi::HandleCommandL(TInt aCommand){switch (aCommand)
{case EEikCmdExit:case EAknSoftkeyExit:
Exit();break;
case ECommand1://break;
default:Panic(EExam0303NewGuiUi);break;
}}
资源文件 定义 CBA 栏
RESOURCE CBA r_confirmation_softkeys_ok_cancel { buttons = { CBA_BUTTON { id = EAknSoftkeyOk; txt = “ok”; }, CBA_BUTTON { id = EAknSoftkeyCancel; txt = “cancel”; } }; }
资源文件定义字符串资源
定义本地化字符串资源#define qtn_caption_string "Exam0303NewGui"
定义资源RESOURCE TBUF32 r_caption_string { buf=qtn_capti
on_string; } 使用字符串定义
HBufC* textResource = StringLoader::LoadLC(R_CAPTION_STRING);
CAknInformationNote* informationNote;informationNote = new ( ELeave ) CAknInformationNot
e;informationNote->ExecuteLD( *textResource);CleanupStack::PopAndDestroy(textResource);
BMP图片打包在 mmp 文件中打包位图
START BITMAP vas.mbmHEADER
TARGETPATH \resource\appsSOURCEPATH ..\lookandfeel\bmpSOURCE c12 vas_icon.bmpSOURCE c12 vas_icon_mask.bmpSOURCE c12 vas_title.bmpSOURCE c12 vas_title_mask.bmp
END
打包文件格式1. ; 程序支持的语言定义2. &EN3. 4. ; 标准 SIS 文件头5. #{"Exam0303NewGui"},(0xE2F675DA),1,0,06. 7. ; 本地开发商名称8. %{"Vendor-EN"}9. 10. ; 开发商名称11. :"Vendor"12. 13. ; 安装程序支持的 S60 版本14. [0x101F7961], 0, 0, 0, {"Series60ProductID"}15. 16. ; 安装的文件17."\Symbian\9.1\S60_3rd_MR\Epoc32\release\gcce\urel\Exam0303NewGui_0xE
2F675DA.exe" -"!:\sys\bin\Exam0303NewGui_0xE2F675DA.exe"
18. … …
打包文件格式S60 平台 UID 对照表