请问傻孩子多级菜单问题
参考了版主非常著名的菜单程序,有些地方不是很明白if ((UserChoose < DisplayStart) || (UserChoose > (DisplayStart+3)))
{
DisplayStart = UserChoose;
}
这里的判断是什么意思?
当菜单项大于可显示项时,怎么实现滚屏显示,让当前项总在最底端?
谢谢 这是当时使用的一种类似窗口_技术。
DisplayStart定义了显示内容起始
这段代码实际上用来处理,让用户按UP按钮,使得选择超出了Start指示位置的时候,整个窗体
向上滚动的情况。 Gorgon_Meducer 发表于 2009-9-9 19:21 static/image/common/back.gif
这是当时使用的一种类似窗口_技术。
DisplayStart定义了显示内容起始
最近在做项目,用单片机,可以通过导航旋钮控制TFT屏上的菜单,但是导航旋钮只有正转(下键)和反转(上键)和按下,现在这个按下键要同时用作确定键与返回键,
好像只有通过在屏上标记“上一页”与“下一页”并选中才可以,但是这个应该如何写代码实现呢?
希望高手给些思路,如何区分是按下时,是“上一页”还是“下一页”。。。。。。
在论坛中搜索了下,大多是通过结构体来实现,有四个键,但是我这个只有三个键的真是不知道如何实现与处理啊。求指导~~~~~
下面是方向判断程序
/**************************************************************************
旋转判断程序
*************************************************************************/
void scan_encoder(void)
{
staticbitCurr_encoder_b;//定义一个变量来储存当前B信号
staticbitLast_encoder_b;//定义一个变量来储存上次B脚信号
staticbitupdata= 0;
if( BMA && BMB) //编码器无转动退出
{
updata = 0;
return;
}
Last_encoder_b = BMB; //记录B信号
while(!BMA)//等待A由低变高.while(!BMA) 的作用:当a为0时,!a为真,执行循环体。当a为1时,!a为假,程序就跳过循环体往下执行。
{
Curr_encoder_b = BMB; //记录等待期间的B信号(指当前B信号)
updata = 1;
}
if(updata)
{
updata = 0 ;
if( (Last_encoder_b == 1)&&(Curr_encoder_b== 0) ) //B从1到0为正转
{
flag='1';
i=0;
delayms(1) ;
}
else if( (Last_encoder_b == 0)&&(Curr_encoder_b == 1) ) //B从0到1为反转
{
flag='2' ;
i=0;
delayms(1);
}
}
if(! BMC) //当按下旋钮时
{
flag='3';
i=0;
delayms(1);
}
}
项目做出来,一定分享哈~~~~
还有长按键可以用
页:
[1]