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里写的资源

 

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

 


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

 

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

 

 

责任编辑:佚名 来源: 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开发

2012-05-24 09:38:08

Symbian

2011-06-16 16:21:06

Qt Symbian FAQ

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-22 10:01:40

Symbian开发

2010-06-02 10:33:52

Symbian开发

2012-12-24 15:07:28

symbian

2009-04-12 09:03:50

Symbian诺基亚移动OS

2009-04-12 08:57:50

Symbian诺基亚移动OS

2011-06-08 13:45:44

Symbian Qt

2010-09-07 17:27:54

Carbide.c++Symbian移动开发

2009-04-12 09:02:32

Symbian诺基亚移动OS

2009-04-12 09:06:00

Symbian诺基亚移动OS
点赞
收藏

51CTO技术栈公众号