杭州斯凯SDK教程提高篇.docx

上传人:b****5 文档编号:8629210 上传时间:2023-02-01 格式:DOCX 页数:68 大小:1.30MB
下载 相关 举报
杭州斯凯SDK教程提高篇.docx_第1页
第1页 / 共68页
杭州斯凯SDK教程提高篇.docx_第2页
第2页 / 共68页
杭州斯凯SDK教程提高篇.docx_第3页
第3页 / 共68页
杭州斯凯SDK教程提高篇.docx_第4页
第4页 / 共68页
杭州斯凯SDK教程提高篇.docx_第5页
第5页 / 共68页
点击查看更多>>
下载资源
资源描述

杭州斯凯SDK教程提高篇.docx

《杭州斯凯SDK教程提高篇.docx》由会员分享,可在线阅读,更多相关《杭州斯凯SDK教程提高篇.docx(68页珍藏版)》请在冰豆网上搜索。

杭州斯凯SDK教程提高篇.docx

杭州斯凯SDK教程提高篇

<杭州斯凯网络科技有限公司>

 

SDK开发教程提高篇

 

修订历史记录

日期

版本

说明

作者

2008-12-19

<0.1>

初稿

黄孙波

 

目录

一、引言5

1.1、编写目的5

1.2、适用范围5

1.3、定义、首字母缩写词和缩略语5

1.4、读者范围5

1.5、SDK简介5

二、文件系统6

2.1文件创建和打开6

2.2文件关闭8

2.3文件seek9

2.4文件写入10

2.5文件读取11

2.6文件删除12

2.7获取文件长度13

2.8创建文件夹14

2.9删除文件夹15

2.10获取文件状态16

2.11目录遍历17

2.11.1开始遍历18

2.11.2继续遍历19

2.11.3停止遍历20

三、本地UI和扩展窗体使用21

3.1对话框21

3.1.1创建对话框21

3.1.2刷新对话框22

3.1.3销毁对话框22

3.1.4对话框事件23

3.1.5对话框使用举例23

3.2文本框27

3.2.1创建对话框27

3.2.2刷新文本框28

3.2.3销毁文本框28

3.2.4文本框事件29

3.2.5文本框使用举例29

3.3编辑框33

3.3.1创建编辑框33

3.3.2获取编辑框内容33

3.3.3销毁编辑框34

3.3.4编辑框事件34

3.3.5编辑框使用举例35

3.4菜单40

3.4.1创建菜单40

3.4.2设置菜单41

3.4.3显示菜单41

3.4.4刷新菜单41

3.4.5销毁菜单42

3.4.6菜单事件42

3.4.7菜单使用举例42

3.5扩展窗体47

3.5.1创建扩展窗体48

3.5.2窗口事件48

3.5.3按键事件48

3.5.4扩展窗体使用举例48

四、图片高级接口使用51

4.1256色图片使用方法51

4.1.1添加256色bmp图片资源方法51

4.1.2从mrp包里面加载256色bmp图片方法52

4.1.3256色bmp图片显示方法54

4.1.4256色bmp图片释放方法57

4.2jpg图片使用方法58

4.2.1添加jpg图片资源方法59

4.2.2从mrp包里面加载jpg图片方法59

4.2.3jpg图片显示方法60

4.2.4jpg图片释放方法62

4.3gif图片使用方法64

4.3.1添加gif图片资源方法64

4.3.2从mrp包里面加载gif图片方法65

4.3.3gif图片显示方法66

4.3.4gif图片释放方法68

4.4图片旋转实现方法70

4.4.1图片旋转接口70

4.4.2图片旋转使用方法71

4.4.3图片旋转效果74

五、屏幕缓冲区使用76

5.1获取屏幕缓冲区指针76

5.2设置屏幕缓冲区76

5.3屏幕缓冲区使用举例77

六、长按键功能79

6.1长按键实现原理79

6.2长按键实现方法79

一、引言

1.1、编写目的

为了使与杭州斯凯合作的CP公司进一步熟悉我们的SDK开发环境,特编写此提高教程。

1.2、适用范围

适合那些刚刚与杭州斯凯合作公司渠道软件产品开发工程师。

1.3、定义、首字母缩写词和缩略语

SDK:

杭州斯凯网络科技有限公司的软件开发环境。

1.4、读者范围

各CP公司开发人员;本公司开发人员也可以参考。

1.5、SDK简介

杭州斯凯的SDK开发环境是一个标准的C语言开发环境,

我们已经将手机平台的底层相关功能统一封装成标准的C语言函数,只要用户熟悉C语言开发,那么就可以像在Windows一样使用标准C语言进行开发应用。

二、文件系统

在软件开发过程中,我们经常需要将内存中的数据保存到文件中,或者从文件读取保存的配置信息,因此,我们需要了解SDK上的文件创建、打开、读取、写入、seek等操作接口。

下面我们将详细介绍文件系统的各个接口以及使用方法,需要注意的一点是这里描述的所有文件操作,其所对应的根目录是SDK的工作目录,通常为C:

\mythroad,目前我们的SDK暂时不提供操作目录切换到其他盘的接口。

2.1文件创建和打开

SDK中,我们通过mrc_open接口来实现文件创建和打开功能,其函数原型如下所示:

filename是要创建或者打开的文件名,mode为文件打开模式,其类型有:

MR_FILE_RDONLY:

只读方式打开

MR_FILE_WRONLY:

只写方式打开

MR_FILE_RDWR:

读写方式打开

MR_FILE_CREATE:

如果文件不存在就创建文件,需要与上述三种情况组合使用,不能单独使用。

1.当我们需要创建文件的时候,可以通过如下代码来实现:

int32OpenFile(void)

{

char*file_name="test.txt";

int32fd=0;

fd=mrc_open(file_name,MR_FILE_RDWR);

if(0!

=fd)

{

//openfilesuc.

}

else

{

//openfilefailed.

}

returnfd;

}

 

2.如果只是想打开文件,

而不想创建新的文件,

那么可以通过右边代码来实现:

 

当mrc_open调用成功的时候,返回一个非NULL的文件句柄,否则返回NULL。

2.2文件关闭

当我们通过mrc_open接口来打开文件以后,当不再需要对打开的文件进行操作以后,必须要关闭先前打开的文件,否则会造成文件句柄泄露,而导致后续文件打开操作失败。

关闭文件操作,是通过mrc_close函数来实现的,其函数原型如下所示:

f:

是先前打开的文件句柄。

具体关闭方法可以通过如下代码来实现:

注:

当函数返回MR_SUCCESS,文件关闭成功,否则文件关闭失败。

2.3文件seek

当我们成功打开一个以后,通过会对文件进行读写操作,在进行读写文件之后,我们需要确定文件读写的开始位置,否则对文件进行的读写操作结果会与预期的不一样。

SDK中,我们是通过mrc_seek函数来修改文件读写操位置,其函数原型如下所示:

f是打开的文件句柄,pos为文件位置,method为seek方法,有三种:

1.MR_SEEK_SET:

文件读写位置从文件开始位置移动pos个长度;

2.MR_SEEK_CUR:

文件读写位置移动到以当前位置为起点,移动到pos长度的新位置;

3.MR_SEEK_END:

文件读写位置从文件结尾位置移动pos个长度;

具体seek方法可以通过如下代码来实现:

当函数返回MR_SUCCESS,文件seek成功,否则文件seek失败。

2.4文件写入

当我们成功修改了文件读写位置以后,我们就可以将内存中数据写入到文件指定的位置。

SDK中,我们是通过mrc_write函数来进行文件写入操作,其函数原型如下所示:

f是打开的文件句柄,p为要写入的数据指针,l为写入的数据长度。

具体写入方法可以通过如下代码来实现:

当函数返回MR_FAILED表示写入文件失败,否则返回实际写入的字节数。

注意:

mrc_write函数的返回值可能小于实际要写入的字节数,应用必须处理这种情况。

2.5文件读取

当我们成功修改了文件读写位置以后,我们就可以将文件中的数据读取到内存中。

SDK中,我们是通过mrc_read函数来进行文件读取操作,其函数原型如下所示:

f是打开的文件句柄,p为要读取的内存缓冲区,l为读取的数据长度。

具体读取方法可以通过如下代码来实现:

当函数返回MR_FAILED读取文件失败,否则返回实际读取的字节数。

注意:

mrc_read函数的返回值可能为0或者小于实际要写入的字节数,应用必须处理这种情况。

2.6文件删除

当我们不再需要某个文件的时候,我们通常会对它进行删除操作。

SDK中,我们是通过mrc_remove函数来进行文件删除操作,其函数原型如下所示:

filename是要删除的文件名。

具体文件删除方法可以通过如下代码来实现:

当函数返回MR_SUCCESS删除文件成功,否则删除文件失败。

 

2.7获取文件长度

当我们需要把某个文件内容全部读取进来的时候,通常需要根据文件大小来分配内存缓冲区。

SDK中,我们是通过mrc_getLen函数来获取文件长度,其函数原型如下所示:

filename是要获取长度的文件名。

具体获取文件长度方法可以通过如下代码来实现:

当函数返回MR_FAILED获取文件长度失败,否则返回文件长度。

2.8创建文件夹

在程序里面,我们通常需要把本应该的相关数据保存到属于该应用的文件夹里面,因此需要用到文件夹创建相关接口。

SDK中,我们是通过mrc_mkDir函数来进行创建文件夹操作,其函数原型如下所示:

name是要创建的文件夹名称。

具体文件夹创建方法可以通过如下代码来实现:

当函数返回MR_SUCCESS创建文件夹成功,否则创建文件夹失败。

2.9删除文件夹

SDK中,我们是通过mrc_rmDir函数来进行文件读取操作,其函数原型如下所示:

name是要删除的文件夹名称。

具体文件夹创建方法可以通过如下代码来实现:

当函数返回MR_SUCCESS创建文件夹成功,否则创建文件夹失败。

删除文件夹的时候,也会把文件中的文件和子文件夹删除掉。

2.10获取文件状态

在SDK中,我们是通过mrc_fileState函数来获取文件的状态,其函数原型如下所示:

filename是要获取状态的文件或文件夹名称。

具体获取文件状态方法可以通过如下代码来实现:

当函数返回MR_IS_FILE表示文件,返回MR_IS_DIR表示文件夹,返回MR_IS_INVALID表示无效,既不是文件也不是文件夹。

2.11目录遍历

在应用开发过程中,有时候我们需要获取某个目录的详细文件信息,这时候就需要用到目录遍历的相关接口,SDK也提供相应的接口。

需要注意的是,SDK的目录遍历接口不支持递归遍历,只会遍历当前目录,不会自动遍历子目录。

SDK中,目录遍历分成三个步骤:

分成开始遍历、继续遍历和停止遍历,分别由三个接口来实现,下面我们将详细介绍其使用方法。

2.11.1开始遍历

开始目录遍历的方法,是通过mrc_findStart函数来实现的,该函数的原型如下所示:

函数参数:

1.name是要遍历的文件夹名称

2.buffer用来存放第一个目录搜索结果:

char类型

3.len为buffer长度。

开始遍历的具体方法可以通过如下代码来实现:

当函数返回MR_FAILED表示开始遍历失败

当返回值大于0,说明遍历成功,该返回值为目录遍历的句柄,需要保存起来,继续遍历的时候会用到。

需要注意的是,返回的buf内容可能为“.”。

2.11.2继续遍历

目录继续遍历的方法,是通过mrc_findGetNext函数来实现的,该函数的原型如下所示:

search_handle是已经打开的目录搜索句柄,buffer用来存放目录搜索结果,len为buffer长度。

继续遍历的具体方法可以通过如下代码来实现:

当函数返回MR_SUCCESS表示继续遍历成功

当返回MR_FAILED说明遍历失败或者遍历结束

需要注意的是,返回的buf内容可能为“..”

2.11.3停止遍历

当遍历结束或者发生错误的时候,需要调用停止遍历接口释放相关资源。

停止遍历的方法,是通过mrc_findStop函数来实现的,该函数的原型如下所示:

search_handle是已经打开的目录搜索句柄。

停止遍历的具体方法可以通过如下代码来实现:

当函数返回MR_SUCCESS表示停止遍历成功

当返回MR_FAILED说明停止遍历失败

注意:

当遍历结束的使用一定要调用mrc_findStop函数来释放相关资源,否则会造成资源泄露。

三、本地UI和扩展窗体使用

在应该开发过程中,我们有时候需要用到手机本身自带的一些控件,如对话框、文本框、编辑框、菜单等,我们统一称呼为本地UI;同样的,有时候我们需要创建一个扩展窗体。

3.1对话框

在应用中,有时候需要利用对话框提示用户,这时候可以用手机本身自带的对话框来提示用户,不需要应用自己去绘制窗口界面。

3.1.1创建对话框

在SDK中,我们通过mrc_dialogCreate函数来创建对话框,该函数的原型如下所示:

title是对话框的标题,text是对话框显示文字内容,type是对话框的类型,有三种类型可以选择:

MR_DIALOG_OK:

对话框有“确定”按钮;

MR_DIALOG_OK_CANCEL:

对话框有“确定”和“取消”按钮;

MR_DIALOG_CANCEL:

对话框有“返回”按钮。

Title和text都是unicode编码,网络字节顺序unibigend。

当函数返回正整数表示对话框创建成功,当返回MR_FAILED说明对话框创建失败。

3.1.2刷新对话框

当对话框界面需要重新绘制的时候,我们通过mrc_dialogRefresh函数来刷新对话框,该函数的原型如下所示:

dialog是需要刷新的对话框句柄,title是对话框的标题,text是对话框显示文字内容,type是对话框的类型,有三种类型可以选择:

MR_DIALOG_OK:

对话框有“确定”按钮;

MR_DIALOG_OK_CANCEL:

对话框有“确定”和“取消”按钮;

MR_DIALOG_CANCEL:

对话框有“返回”按钮。

Title和text都是unicode编码,网络字节顺序。

3.1.3销毁对话框

当对话框使用完毕的时候,我们需要通过调用mrc_dialogRelease函数来销毁对话框,该函数的原型如下所示:

int32mrc_dialogRelease(int32dialog);

dialog是需要销毁的对话框句柄。

注意:

对话框使用完成以后,必须调用mrc_dialogRelease来销毁,否则会造成资源泄露,导致sky的下载平台applist异常。

3.1.4对话框事件

在对话框界面进行确定或取消操作,SDK会通过mrc_appEvent返回相应的事件类型,其中code值为MR_DIALOG_EVENT,param0值可能为MR_DIALOG_KEY_OK和MR_DIALOG_KEY_CANCEL,当用户点击确定param0值为MR_DIALOG_KEY_OK,点击取消param0值为MR_DIALOG_KEY_CANCEL。

3.1.5对话框使用举例

下面我们举例说明对话框的各个接口使用方法,这里我们把对话框加入到窗口系统中使用。

1.创建窗口

2.窗口事件处理

3.按键事件处理

4.对话框接口相关实现

1.创建对话框:

2.刷新对话框:

3.销毁对话框:

窗口效果:

3.2文本框

在应用中,有时候需要利用文本框来显示文本信息,这时候可以用手机本身自带的文本框来显示,不需要应用自己去绘制窗口界面。

3.2.1创建对话框

在SDK中,我们通过mrc_textCreate函数来创建文本框,该函数的原型如下所示:

title是文本框的标题,text是文本框显示文字内容,type是文本框的类型,有三种类型可以选择:

MR_DIALOG_OK:

对话框有“确定”按钮;

MR_DIALOG_OK_CANCEL:

对话框有“确定”和“取消”按钮;

MR_DIALOG_CANCEL:

对话框有“返回”按钮。

Title和text都是unicode编码,网络字节顺序。

当函数返回正整数表示文本框创建成功,当返回MR_FAILED说明文本框创建失败。

3.2.2刷新文本框

当文本框界面需要重新绘制的时候,我们通过mrc_textRefresh函数来刷新文本框,该函数的原型如下所示:

handle是需要刷新的文本框句柄,title是文本框的标题,text是文本框显示文字内容。

3.2.3销毁文本框

当文本框使用完毕的时候,我们需要通过调用mrc_textRelease函数来销毁文本框,该函数的原型如下所示:

text是需要销毁的文本框句柄。

注意:

文本框使用完成以后,必须调用mrc_textRelease来销毁,否则会造成资源泄露,导致sky的下载平台applist异常。

3.2.4文本框事件

在文本框界面进行确定或取消操作,SDK会通过mrc_appEvent返回相应的事件类型,其中code值为MR_DIALOG_EVENT,param0值可能为MR_DIALOG_KEY_OK和MR_DIALOG_KEY_CANCEL,当用户点击确定param0值为MR_DIALOG_KEY_OK,点击取消param0值为MR_DIALOG_KEY_CANCEL。

3.2.5文本框使用举例

下面我们举例说明文本框的各个接口使用方法,这里我们把文本框加入到窗口系统中使用。

1创建窗口

2窗口事件处理

3按键事件处理

4文本框接口相关实现

创建文本框:

刷新文本框:

销毁文本框:

窗口效果:

3.3编辑框

在应用中,有时候需要利用编辑框来让用户输入信息,这时候可以用手机本身自带的编辑框来实现用户信息输入。

3.3.1创建编辑框

在SDK中,我们通过mrc_editCreate函数来创建编辑框,该函数的原型如下所示:

title是编辑框的标题,text是编辑框显示文字内容,

type是编辑框输入法的类型,有三种类型可以选择:

MR_EDIT_ANY:

可以输入任何字符;

MR_EDIT_NUMERIC:

输入数字;

MR_EDIT_PASSWORD:

输入密码,用“*”表示;

Max_size:

编辑框最多可以输入字符数,unicode编码格式。

Title和text都是unicode编码,网络字节顺序。

当函数返回正整数表示编辑框创建成功,当返回MR_FAILED说明编辑框创建失败。

3.3.2获取编辑框内容

当用户输入完成以后,我们需要获取用户输入的信息内容,可以通过mrc_editGetText函数来获取编辑框内容,该函数的原型如下所示:

edit是编辑框句柄。

当返回非NULL指针,获取编辑框内容成功,

否则获取编辑框内容失败,获取的编辑框内容是unicode编码。

3.3.3销毁编辑框

当编辑框使用完毕的时候,我们需要通过调用mrc_editRelease函数来销毁编辑框,该函数的原型如下所示:

edit是需要销毁的编辑框句柄。

注意:

编辑框使用完成以后,必须调用mrc_editRelease来销毁,否则会造成资源泄露,导致sky的下载平台applist异常。

3.3.4编辑框事件

在编辑框界面进行确定或取消操作,SDK会通过mrc_appEvent返回相应的事件类型,其中code值为MR_DIALOG_EVENT,param0值可能为MR_DIALOG_KEY_OK和MR_DIALOG_KEY_CANCEL,当用户点击确定param0值为MR_DIALOG_KEY_OK,点击取消param0值为MR_DIALOG_KEY_CANCEL。

3.3.5编辑框使用举例

下面我们举例说明文本框的各个接口使用方法,这里我们把文本框加入到窗口系统中使用。

1.创建窗口

voidEditWinHandler(int32data,int32eventId)

{

switch(eventId)

{

caseWIN_EVENT_SHOW:

CreateEdit();

break;

caseWIN_EVENT_REFRESH:

DrawEditContent();

break;

caseWIN_EVENT_PAUSE:

break;

caseWIN_EVENT_UPDATE:

DrawEditContent();

break;

caseWIN_EVENT_EXIT:

if(g_edit_fd>=0)

{

DestoryEdit(g_edit_fd);

g_edit_fd=-1;

}

break;

default:

break;

}

}

2.窗口事件处理

 

3.按键事件处理

编辑框接口相关实现

1.创建编辑框:

3.获取编辑框内容:

4.销毁编辑框:

int32DestoryEdit(int32edit)

{

int32ret=MR_FAILED;

if(edit>=0)

{

ret=mrc_textRelease(edit);

}

returnret;

}

5.显示edit内容

窗口效果:

3.4菜单

在应用中,有时候需要利用菜单来显示可以选择的列表,这时候可以用手机本身自带的菜单来显示,不需要应用自己去绘制窗口界面。

3.4.1创建菜单

在SDK中,我们通过mrc_menuCreate函数来创建文本框,该函数的原型如下所示:

title是文本框的标题,num是菜单项个数。

当函数返回正整数表示菜单创建成功,当返回MR_FAILED说明菜单创建失败。

3.4.2设置菜单

当菜单创建好以后,我们需要对菜单项进行设置,我们可以通过mrc_menuSetItem函数来设置菜单项,该函数的原型如下所示:

menu是需要设置的菜单框句柄,text是菜单向的显示内容,index是菜单项的序号,从0开始。

该接口每次只可以设置一个菜单项,菜单的每个菜单向项必须先设置过才能正常显示内容的。

3.4.3显示菜单

当设置好菜单的每个菜单项以后,我们通过mrc_menuShow函数来显示菜单,该函数的原型如下所示:

menu是需要显示的菜单句柄。

3.4.4刷新菜单

当菜单界面需要重新绘制的时候,我们通过mrc_menuRefresh函数来刷新菜单框,该函数的原型如下所示:

menu是需要刷新的菜单句柄。

3.4.5销毁菜单

当菜单使用完毕的时候,我们需要通过调用mrc_menuRelease函数来销毁菜单,该函数的原型如下所示:

menu是需要销毁的菜单句柄。

注意:

菜单使用完成以后,必须调用mrc_menuRelease来销毁,否则会造成资源泄露,导致sky的下载平台applist异常。

3.4.6菜单事件

当用户在菜单界面进行选择操作,SDK会通过mrc_appEvent返回相应的事件类型,其中code值为MR_MENU_SELECT,param0值选择菜单的序号,第一个菜单项的序号为0;当用户在菜单界面进行取消操作,返回code值为MR_MENU_RETURN。

3.4.7菜单使用举例

下面我们举例说明菜单的各个接口使用方法

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1