已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实践指导手册- 18 -项目操作指导手册Symbian项目二:手机即时贴手机应用开发(Version 1.0)北京乐成教育管理有限公司手机即时贴手机应用开发一、项目名称:项目名称:手机即时贴手机应用开发课时安排:4h二、项目目标:通过学习Symbian应用程序架构、程序菜单的创建修改方法、标签控件和编辑器控件的使用,实现一款用户输入数据并显示的功能。通过本次实验让学员熟悉Symbian程序架构,学习掌握Symbian GUI应用程序开发基础,掌握用户数据的输入、输出技术的目标。(1) 熟悉Symbian OS S60程序架构(2) 掌握Symbian GUI应用程序开发基础:熟悉应用程序界面,熟悉程序图标(3) 熟悉窗口和控件,掌握标签控件和编辑器控件的编程方法(4) 掌握用户数据的输入、输出技术实现方法(5) 生成手机版本,打包安装到手机运行三、项目方式:(1) 老师带领下,每名同学独立完成该任务四、项目步骤4.1任务1:修改程序图标和标题(时间:60分钟)4.1.1 任务描述(1) 掌握Symbian应用程序图标和标题的设置和修改4.1.2 任务目的(1) 熟悉Symbian S60应用程序信息框架(2) 熟悉Symbian应用程序图标和标题(3) 掌握Symbian应用程序图标和标题的设置和修改方法4.1.3 任务要求(1) 修改Symbian应用程序图标(2) 修改Symbian应用程序标题4.1.4 难点提示(1) 导入模板工程Typing,在此基础上进行操作(2) 准备图片i. 准备2张图片(原图+遮罩)图片放到 /gfx目录,并修改图片名称1. 图片名称举例:list.bmp/list_mask_soft.bmp,icon.bmp/icon_mask_soft.bmp2. 注意:图标格式为.bmp3. 建议:list原图的位深度为24,遮罩的位深度为8,大小为42x29icon原图的位深度为24,遮罩的位深度为8,大小为44x44(3) 添加图片到Icons_scalable_dc.mki. 在【Project Explorer】中找到Icons_scalable_dc.mk文件,点击右键选择【Edit MBM/MIF】-【Typing_0Xecf00f8f.mif】,如下图所示:ii. 弹出如下对话框,选择【Add From Project】导入/gfx中的图片,在右侧设置图片对应的位深度,及其对应遮罩的位深度,设置完成可以再Preview处预览效果图,如下图所示:1. 注意:只需添加原图即可,遮罩图可自动加载,若无法加载遮罩,请检查遮罩的名称,及位深度,并重新设置。2. 图片设置完毕,点击OK,重新编译Icons_scalable_dc.mk文件,如下图所示,选择【Icons_scalable_dc.mk】点击右键,选择【Build Symbian Component】编译成功在如下目录生成Typing_0xECF00F8F.mbm文件C:Symbian9.1S60_3rd_MREpoc32releasewinscwudebzresourceapps(4) 修改Typing.rss资源文件i. 打开Typing.rss文件,找到LOCALISABLE_APP_INFO的定义,修改icon_file的路径,如下所示:RESOURCE LOCALISABLE_APP_INFO r_localisable_app_infoshort_caption = qtn_caption_string;caption_and_icon = CAPTION_AND_ICON_INFOcaption = qtn_caption_string;number_of_icons = 2;icon_file = resourceappsTyping_0xECF00F8F.mbm;ii. 保存Typing.rss文件,重新编译工程,运行模拟器查看修改结果。(5) 修改应用程序标题i. 在Typing.rls中定义标题,如下所示:#define qtn_caption_string KAKA#define qtn_short_caption_string Memoryii. 打开Typing.rss文件,找到LOCALISABLE_APP_INFO的定义,修改short_caption和caption的属性如下所示:RESOURCE LOCALISABLE_APP_INFO r_localisable_app_infoshort_caption = qtn_short_caption_string;caption_and_icon = CAPTION_AND_ICON_INFOcaption = qtn_caption_string;number_of_icons = 2;icon_file = resourceappsTyping_0xECF00F8F.mbm;iii. 保存Typing.rss文件,重新编译工程,运行模拟器查看修改结果。(6) 添加中文标题i. 拷贝cn.bat、*.loc、*_cn.src文件到inc目录,并修改内容,如下所示ii. 运行cn.bat进行字符集转换,Typing.l31文件,文件及内容,如下所示:iii. 修改*.rss 资源文件1. 包含头文件:#include Typing.l312. 修改short_caption和caption的属性如下所示:RESOURCE LOCALISABLE_APP_INFO r_localisable_app_infoshort_caption = qtn_tp_app_caption;caption_and_icon = CAPTION_AND_ICON_INFOcaption = qtn_tp_app_caption;number_of_icons = 2;icon_file = resourceappsTyping_0xECF00F8F.mbm;iv. 保存*.rss 文件,编译运行4.2任务2:菜单处理(时间:30分钟)4.2.1 任务描述(1) 菜单设置方法4.2.2 任务目的(1) 设置常规菜单(2) 设置子菜单4.2.3 任务要求(1) 设计菜单和子菜单(2) 设置菜单和子菜单的显示4.2.4 难点提示(1) 需要在资源文件中修改的菜单相关资源如下:i. RESOURCE CBA CBA名称ii. RESOURCE MENU_BAR 菜单栏名称iii. RESOURCE MENU_PANE 菜单面板名称(2) 设置菜单i. 在Typing.rls中定义选项显示的内容,如下所示:#define qtn_statistics Statisticsii. 在Typing.hrh中定义选项ID,如下所示:enum TTypingIdsECommand1 = 0x6001, / start value must not be 0ECommand2,EHelp,EAbout,EStatistics;注意:枚举的格式iii. 修改Typing.rss资源1. 修改MENU_PANE,修改完毕后保存。如下所示:RESOURCE MENU_PANE r_menuitems =/ added the new Options menu command hereMENU_ITEMcommand = EStatistics;txt = qtn_statistics;,MENU_ITEMcommand = EAbout;txt = qtn_about;,MENU_ITEMcommand = EAknSoftkeyExit;txt = qtn_exit;iv. 修改TypingAppUi.cpp中的HandleCommandL函数,如下所示:void CTypingAppUi:HandleCommandL(TInt aCommand)switch (aCommand)case EEikCmdExit:case EAknSoftkeyExit:Exit();break;case EStatistics:break;case EAbout:v. 重新编译工程,运行模拟器查看修改结果。4.3任务3:打字功能的实现(时间:30分钟)4.3.1 任务描述(1) 文字显示控件的实现(2) 文字输入控件的实现(3) 用户按键事件的处理4.3.2 任务目的(1) 掌握Label控件的实现(2) 掌握Editor控件的实现4.3.3 任务要求(1) 掌握使用Label控件显示文字(2) 掌握使用Editor控件实现文字的输入(3) 掌握用户按键的处理4.3.4 难点提示(1) Label控件的创建与使用i. Label控件的声明1. 在TypingAppView.h中声明Label并定义Label指针变量,如下所示:class CEikLabel;class CTypingAppView : public CCoeControlprivate:CEikLabel*iMessageLabel;2. 在TypingAppView.cpp中的CTypingAppView:CTypingAppView()对指针初始化、在CTypingAppView:CTypingAppView()清除指针,清除指针如下所示:CTypingAppView:CTypingAppView()/ No implementation requiredif(iMessageLabel)delete iMessageLabel;iMessageLabel = NULL;ii. Label控件的创建在TypingAppView.cpp中1. 包含库文件:eikcoctl.lib2. 包含头文件:#include 3. 在ConstructL() 中创建Label,如下所示:void CTypingAppView:ConstructL(const TRect& aRect)/ Create a window for this application viewCreateWindowL();TInt nTop = (aRect.Height() * 10) / 200;if(nTop SetContainerWindowL(*this);_LIT(KMessage,Please input here:);iMessageLabel -SetTextL(KMessage);iMessageLabel-SetExtent(TPoint(nEdge,nTop),iMessageLabel-MinimumSize();4. 在CountComponentControls()中,将控件个数加1,如下所示:TInt CTypingAppView:CountComponentControls() constreturn 1;5. 在在ComponentControl()中返回控件指针,如下所示:CCoeControl* CTypingAppView:ComponentControl(TInt aIndex) constreturn iMessageLabel;6. 编译运行,查看结果(2) Editor控件的创建与使用i. Editor控件的声明1. 在TypingAppView.h中声明Editor并定义Editor指针变量,如下所示:class CEikEdwin;class CTypingAppView : public CCoeControlprivate:CEikEdwin*iMessage;2. 在TypingAppView.cpp中的CTypingAppView:CTypingAppView()对指针初始化、在CTypingAppView:CTypingAppView()清除指针ii. Editor控件的创建,在TypingAppView.cpp1. 包含库文件:eikcoctl.lib2. 包含头文件:#include 3. 在ConstructL() 中创建Editor,如下所示:iMessage = new(ELeave) CEikEdwin;iMessage-SetContainerWindowL(*this);iMessage-ConstructL(EAknEditorFlagDefault | EEikEdwinJustAutoCurEnd|EEikEdwinNoAutoSelection,20,256,30);iMessage-SetExtent(TPoint(nEdge,nTop+iMessageLabel-MinimumSize().iHeight+5),TSize(aRect.Width()-2*nEdge,aRect.Height()-(2*nTop+iMessageLabel-MinimumSize().iHeight+5);iMessage-SetFocus(ETrue);4. 在CountComponentControls()中,将控件个数加1,在添加了Label控件的基础之上,如下所示:TInt CTypingAppView:CountComponentControls() constreturn 2;5. 在ComponentControl()中返回控件指针,如下所示:CCoeControl* CTypingAppView:ComponentControl(TInt aIndex) constswitch(aIndex)case 0: return iMessageLabel;case 1:return iMessage;6. 在OfferKeyEventL ()中处理用户按键,如下所示:TKeyResponse CTypingAppView:OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)if(iMessageEdit)return iMessageEdit -OfferKeyEventL(aKeyEvent,aType);elsereturn EKeyWasNotConsumed;7. 设置背景颜色在Draw()函数中实现,参考代码如下:void CTypingAppView:Draw(const TRect& /*aRect*/) const/ Get the standard graphics contextCWindowGc& gc = SystemGc();/ Gets the controls extentTRect drawRect(Rect();/ Clears the screengc.Clear(drawRect);gc.SetBrushStyle(CGraphicsContext:ESolidBrush);gc.SetBrushColor(KRgbGray);gc.DrawRect(drawRect);8. 编译运行,查看结果4.4任务4:统计数据功能的实现(时间:30分钟)4.3.1 任务描述(1) 获取用户输入数据(2) 分析用户输入数据4.3.2 任务目的(1) 掌握如何获取Editor框内容(2) 掌握简单的描述符的应用4.3.3 任务要求(1) 掌握基本的字符串的处理.(2) 打包签名安装在手机上运行4.3.4 难点提示(1) 获取用户输入数据,i. 可通过自定义函数GetMessageL() 调用Editor提供GetText()函数如下所示:在TypingAppView.h中声明如下:class CTypingAppView : public CCoeControlpublic:/ New
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业文化宣传材料制作标准模板品牌传播效果提升
- 房地产经纪人成交率与客源维护效果考核表
- 通信考试试题及答案解析
- 课时作业(五十五) 热力学定律与能量守恒 2026年高考物理第一轮总复习
- 课时作业(二十三) 动量和动量定理 2026年高考物理第一轮总复习
- 九年级上册必记化学方程式+化学式
- 阶段综合训练(八) 带电粒子在电场中运动的综合问题 2026年高考物理第一轮总复习
- 【语文】台州市三年级下册期末复习试卷(含答案)
- 保险公司理赔专员案件处理速度与准确度考核表
- 企业员工培训计划编制及实施步骤详解
- 煤矿井下隔爆水棚安装设计说明
- 盘锦浩业芳烃抽提装置操作规程
- 人工智能在教育中的应用42页PPT课件
- DB33_T 2301-2020番茄水肥一体化技术规程(高清正版)
- 路面病害处理专项施工组织方案
- 农药基础知识培训
- (高清版)辐射供暖供冷技术规程JGJ142-2012
- 利雅路燃气燃烧器说明书
- 校长在教育教学质量分析会上的表态发言
- 楼房土建及设备大中小修标准
- 人教版九年级化学第1-6单元试题含答案(共4页)
评论
0/150
提交评论