搜索
bottom↓
回复: 3

请问傻孩子多级菜单问题

[复制链接]

出0入0汤圆

发表于 2009-9-9 08:33:27 | 显示全部楼层 |阅读模式
参考了版主非常著名的菜单程序,有些地方不是很明白
if ((UserChoose < DisplayStart) || (UserChoose > (DisplayStart+3)))
               {
                 DisplayStart = UserChoose;
                }
这里的判断是什么意思?
当菜单项大于可显示项时,怎么实现滚屏显示,让当前项总在最底端?
谢谢

出0入296汤圆

发表于 2009-9-9 19:21:51 | 显示全部楼层
这是当时使用的一种类似窗口_技术。

DisplayStart定义了显示内容起始
这段代码实际上用来处理,让用户按UP按钮,使得选择超出了Start指示位置的时候,整个窗体
向上滚动的情况。

出0入0汤圆

发表于 2012-5-17 00:28:31 | 显示全部楼层
Gorgon_Meducer 发表于 2009-9-9 19:21
这是当时使用的一种类似窗口_技术。

DisplayStart定义了显示内容起始

最近在做项目,用单片机,可以通过导航旋钮控制TFT屏上的菜单,但是导航旋钮只有正转(下键)和反转(上键)和按下,现在这个按下键要同时用作确定键与返回键,
好像只有通过在屏上标记“上一页”与“下一页”并选中才可以,但是这个应该如何写代码实现呢?
    希望高手给些思路,如何区分是按下时,是“上一页”还是“下一页”。。。。。。

在论坛中搜索了下,大多是通过结构体来实现,有四个键,但是我这个只有三个键的真是不知道如何实现与处理啊。求指导~~~~~


下面是方向判断程序



/**************************************************************************

旋转判断程序

*************************************************************************/
  void scan_encoder(void)
{  
           static  bit  Curr_encoder_b;  //定义一个变量来储存当前B信号
          static  bit  Last_encoder_b;  //定义一个变量来储存上次B脚信号
           static  bit  updata= 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);
           }
}

  项目做出来,一定分享哈~~~~

出0入296汤圆

发表于 2012-5-17 09:15:37 | 显示全部楼层
还有长按键可以用
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 20:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表