管理员
  
- 积分
- 165371
- 金钱
- 165371
- 注册时间
- 2010-12-1
- 在线时间
- 2110 小时
|
发表于 2012-1-10 12:45:44
|
显示全部楼层
用动态内存管理,采用结构体管理控件.支持创建删除.
看看这个代码,基本就能看出端倪了:
u8 ebook_play(void)
{
u8 ksta=0;
u16 index=0xffff;
_filelistbox_list * filelistx; //文件
_btn_obj* rbtn; //返回按钮
_filelistbox_obj * flistbox;
flistbox=filelistbox_creat(0,20,240,280,1,12); //创建一个filelistbox
if(flistbox==NULL)ksta=1; //申请内存失败.
else
{
flistbox->filter=FLBOX_FLT_TEXT|FLBOX_FLT_LRC; //仅仅查找可用的文本文件//0XFFFF; //查找所有的文件
filelistbox_addlist(flistbox,"SD卡",0); //磁盘
filelistbox_addlist(flistbox,"本地磁盘",0); //磁盘
filelistbox_draw_listbox(flistbox);
}
app_gui_tcbar(0,0,240,20,0x02); //下分界线
app_gui_tcbar(0,300,240,20,0x01); //上分界线
gui_show_strmid(0,0,240,20,WHITE,16,"电子图书");
rbtn=btn_creat(199,300,40,19,0,0x03);//创建文字按钮
if(rbtn==NULL)ksta=1; //没有足够内存够分配
else
{
rbtn->caption="返回"; //名字
rbtn->font=16; //字体
rbtn->bcfdcolor=WHITE; //按下时的颜色
rbtn->bcfucolor=WHITE; //松开时的颜色
btn_draw(rbtn);//画按钮
}
if(ksta==0)
{
while(1)
{
tp_dev.scan(0);
in_obj.get_key(&tp_dev,IN_TYPE_TOUCH);//得到按键键值
filelistbox_check(flistbox,&in_obj);
ksta=btn_check(rbtn,&in_obj);
if(ksta)
{
if(((rbtn->sta&0X80)==0))//按键为松开
{
filelistx=filelist_search(flistbox->list,flistbox->selindex);//得到此时选中的list的信息
if(filelistx->type==FICO_DISK)//已经不能再往上了
{
index=0xffff;
break;
}else filelistbox_back(flistbox);//退回上一层目录
}
}
delay_ms(10);
}
}
filelist_delete(flistbox);
btn_delete(rbtn);
return index;
}
|
|