Symbian开发中Symbian资源的自定义和解析

移动开发
你对Symbian开发的概念你是否比较熟悉,本文向大家简单介绍一下Symbian资源的自定义和解析,希望本文的介绍能让你有所收获。

本文和大家重点学习一下Symbian开发中Symbian资源的自定义和解析,Symbian开发有很多值得学习的地方,这里就和大家分享一下,相信通过本文的学习你对Symbian开发的概念一定会有明确的认识。

Symbian开发中Symbian资源的自定义和解析

在系统的CCoeEnv里面有个AllocReadResourceAsDes16LC这个函数可以把资源文件读取到数组里,做的上一个项目里面有很多字符串常量数组,我就想可不可以自己定义资源,然后读取呢,网上找个破资料还真不好找,今天有点空闲时间,测试了一下,可以实现自定义并读取,记录一下。

Symbian资源定义的数据类型

字段类型
 

BYTE
单字节,解释为一个有符号或无符号整数

WORD
双字节,解释为一个有符号或无符号整数

LONG
四字节,解释为一个有符号或无符号整数

DOUBLE
八字节,表示一个双精度浮点数

TEXT
以NULL结尾的字符串,已废弃,建议使用LTEXT

LTEXT
Unicode字符串,带有一个前导字节保存长度,没有终止NULL

BUF
Unicode字符串,没有前导字节,没有终止NULL

BUF8
8位字符组成的字符串,没前导和终止,用于放入8位数据

BUF<n>
最大长度为n的Unicode字符串,没有前导和终止

LINK
另一个资源的16位ID,类似于拥有指定资源的一个引用

LLINK
另一个资源的32位ID

SRLINK
自引用LINK,该类型字段值由资源编译器自动分配,不能自行提供初始化值,是一个32位ID

STRUCT
结构,创建本身就是STRUCT的字段,使用它可以把STRUCT嵌入到STRUCT中


◆Symbian开发用这些类型定义自己的自定义资源。可以自己去系统的rh文件里面看看,操作系统定义的一些资源,分析分析

下面是我在rss里写的资源

 

  1. STRUCTDATA  
  2. {  
  3. WORDwrd;  
  4. LONGlng;  
  5. LTEXTltxt;//variablelength  
  6. BYTEbyt;  
  7. DOUBLEdbl;  
  8. }  
  9.  
  10. STRUCTDATAARRAY  
  11. {  
  12. STRUCTdataelement[];  
  13. }  
  14.  
  15. STRUCTMYCUSTOM  
  16. {  
  17. WORDwrd;  
  18. LONGlng;  
  19. LLINKdatas;  
  20. }  
  21.  
  22.  
  23. //  
  24. //-----  
  25.  
  26. RESOURCEDATAARRAYr_data_array  
  27. {  
  28. dataelement=  
  29. {  
  30. DATA  
  31. {  
  32. wrd=11;  
  33. lng=22;  
  34. ltxt="data1";  
  35. byt=1;  
  36. dbl=2.11;  
  37. },  
  38. DATA  
  39. {  
  40. wrd=33;  
  41. lng=44;  
  42. ltxt="data2";  
  43. byt=2;  
  44. dbl=3.11;  
  45. },  
  46. DATA  
  47. {  
  48. wrd=55;  
  49. lng=66;  
  50. ltxt="data3";  
  51. byt=3;  
  52. dbl=4.11;  
  53. }  
  54. };  
  55. }  
  56.  
  57. RESOURCEMYCUSTOMr_mycustom_data  
  58. {  
  59. wrd=10;  
  60. lng=1000;  
  61. datas=r_data_array;  
  62. }  
  63.  

 


在cpp里面读取以上自己写的资源

 

  1. HBufC8*resource=CCoeEnv::Static()->AllocReadResourceAsDes8LC(R_MYCUSTOM_DATA);  
  2. TResourceReaderreader;  
  3. reader.SetBuffer(resource);  
  4. TInta=reader.ReadInt16();  
  5. TIntb=reader.ReadInt32();  
  6. TIntres=reader.ReadInt32();  
  7. HBufC8*res1=CCoeEnv::Static()->AllocReadResourceAsDes8LC(res);//转到LLINK的资源地址  
  8. reader.SetBuffer(res1);  
  9.  
  10. TIntcount=reader.ReadInt16();//数组用前两个字节来标识数组长度  
  11. for(TInti=0;i<count;i++)  
  12. {  
  13. TIntwrd=reader.ReadInt16();  
  14. TIntlng=reader.ReadInt32();  
  15. TPtrCptr=reader.ReadTPtrC();  
  16. TIntbte=reader.ReadUint8();  
  17. TRealdbl=reader.ReadReal64();  
  18. }  
  19. CleanupStack::PopAndDestroy(2);  

 

 

责任编辑:佚名 来源: csdn.net
相关推荐

2010-07-12 09:34:59

Symbian开发

2011-06-16 15:17:16

2010-07-02 09:54:32

Symbian开发

2010-04-22 11:42:44

Symbian开发

2011-06-16 16:21:06

Qt Symbian FAQ

2012-05-24 09:38:08

Symbian

2011-06-16 13:56:48

Qt Symbian DLL

2010-04-12 11:35:38

Symbian开发

2010-05-22 10:38:15

Symbian开发

2010-07-12 09:43:38

Symbian开发

2010-10-27 13:14:24

Symbian

2010-06-02 10:33:52

Symbian开发

2010-06-22 10:01:40

Symbian开发

2009-04-12 08:57:50

Symbian诺基亚移动OS

2009-04-12 09:03:50

Symbian诺基亚移动OS

2012-12-24 15:07:28

symbian

2011-06-08 13:45:44

Symbian Qt

2010-09-07 17:27:54

Carbide.c++Symbian移动开发

2009-04-12 08:59:05

Symbian诺基亚移动OS

2009-04-12 09:00:08

Symbian诺基亚移动OS
点赞
收藏

51CTO技术栈公众号