学习Symbian第七课.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学习Symbian第七课

学习Symbian第七课 今天,我们来做一个小程序,是关于文本文件的读取与写入的,文本文件是最基本的操作。先看看程序运行的效果吧 首先,给程序添加两个菜单用于打开和保存文件。当你选打开文件菜单时,程序读入“C:\Hello.txt”文件(这里的C盘不是电脑的C盘,而是手机模拟器的C盘),并显示在编辑框中。接着你可以在编辑框中对文本内容进行修改。改完后选择保存菜单,程序就把编辑框中的内容追加到原来的文件中保存下来。最后你可以再次选择打开菜单,这是你会发现第二次读入的文件和第一次读入的不同了,在文件后面多了上次编辑的内容。 程序涉及到的知识点 关于菜单和编辑框的操作是前几课讲的内容,我就不重复了。 文件和文件流的操作。 文件的操作要用到“f32file.h”头文件和“efsrv.lib”链接库,他提供了文件的创建删除复制等常规操作,能读取文件属性,读取文件内容等。 因为要保存文件,所以要用到文件流的操作,这就要用到“s32file.h”头文件和“estor.lib”链接库。 Unicode—8编码 我们在读取写入文件时,使用的是二进制来操作,文件中也是以8位的byte二进制数据来存储文件的,一个8位的byte最多能存储256个不同的信息,这样如果存储英文,那也是绰绰有余了。但是汉字远不止256个啊,要存储汉字信息,这就要用双字节来存储,也就是说用两个字节共同来表示一个汉字,这就是Unicode编码。 还有,手机程序中的编辑框所能接受的字符编码是Unicode编码,而文件流中的编码是单字节的字节流,这样在读取文件到编辑框中显示是需要转码的,从编辑框中保存到文件的过程也是要转码的。关于汉字的编码我还是能说上个一二来,我曾有一篇文章《让Flash能读会写》就发表在软件报上面。 在塞班程序中是不需要手动转码的,因为“utf.h”这个头文件里提供了转码的API,我们只要拿过来用就可以了。 程序制作过程: 新建一个多页面框架模版程序Test。 用记事本手动新建一个文本文件,输入“这是第一个Symbian程序!”并保存 C:\Symbian\8.0a\S60_2nd_FP2_SC\epoc32\wins\c\Hello.txt,注意保存时选择文件的编码为“UTF-8”。我们先准备一个文本文件让程序导入。 在Test . rss和Test . hrh创建和注册菜单,在TestView . cpp中编写程序响应代码。 在TestContainer.h中注册编辑框的类和定义编辑框变量,添加读取和保存文件的公共函数。 在TestContainer.rss文件中,创建编辑框,编写读写文件的实现代码。 添加链接库“eikctl.lib bafl.lib efsrv.lib charconv.lib estor.lib” 最后,编译测试程序。 附上程序代码:TestContainer.h源码(菜单的代码就没贴出来了,需自己写) #ifndef TESTCONTAINER_H #define TESTCONTAINER_H #include coecntrl.h class CEikLabel; // for example labels class CEikEdwin; class TResourceReader; class CTestContainer : public CCoeControl, MCoeControlObserver { public: // Constructors and destructor void readFileToEdit(); void saveEditToFile(); void ConstructL(const TRect aRect); ~CTestContainer(); public: // New functions public: // Functions from base classes private: // Functions from base classes void SizeChanged(); TInt CountComponentControls() const; CCoeControl* ComponentControl(TInt aIndex) const; void Draw(const TRect aRect) const; void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType); pri

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档