⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.lst

📁 51单片机在lcd上实现zlg gui,希望好的请多加点分数
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   MENU                                                                  09/11/2007 21:56:46 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MENU
OBJECT MODULE PLACED IN .\OBJ\menu.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE menu.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\LST\menu.lst) OBJECT(.\OBJ\m
                    -enu.obj)

line level    source

   1          /****************************************************************************************
   2          * 文件名:MENU.C
   3          * 功能:菜单显示及操作(下拉式菜单)。
   4          * 作者:黄绍斌
   5          * 日期:2004.02.26
   6          * 备注:使用GUI_SetBackColor()函数设置显示颜色及背景色。
   7          ****************************************************************************************/
   8          #include "config.h"
   9          
  10          
  11          #if  GUI_MenuDown_EN==1
              /****************************************************************************
              * 名称:GUI_MMenuDraw()
              * 功能:显示主菜单,加上边框。
              * 入口参数:men         主菜单句柄
              * 出口参数:返回0表示操作失败,返回1表示操作成功
              ****************************************************************************/
              uint8  GUI_MMenuDraw(MMENU *men)
              {  WINDOWS  *mwin;
                 uint8  i;
                 uint8  xx;
              
                 /* 参数过滤 */
                 if( (men->no)==0 ) return(0);
                 
                 mwin = men->win;                                             // 取得窗口句柄
                 /* 判断是否可以显示主菜单 */
                 if( (mwin->hight)<50 ) return(0);
                 if( (mwin->with)<50 ) return(0);
                 
                 /* 画菜单条,并显示菜主单 */
                 GUI_HLine(mwin->x, mwin->y + 22, mwin->x + mwin->with - 1, disp_color);
                 
                 xx = mwin->x;
                 for(i=0; i<(men->no); i++)
                 {  if( (xx+MMENU_WIDTH) > (mwin->x + mwin->with) ) return(0);
                    
                    GUI_PutNoStr(xx+2, mwin->y + 14, men->str[i], 4);                 // 书写主菜单文字
                    xx += MMENU_WIDTH;
                    GUI_RLine(xx, mwin->y + 12, mwin->y + 22, disp_color);    // 显示主菜单分界线      
                 }
                 
                 return(1);
              }
              
              
              /****************************************************************************
              * 名称:GUI_MMenuSelect()
              * 功能:当前主菜单,加下划线,表示当前主菜单。
              * 入口参数:men         主菜单句柄
              *          no           所选的主菜单项
              * 出口参数:无
              ****************************************************************************/
              void  GUI_MMenuSelect(MMENU *men, uint8 no)
C51 COMPILER V7.50   MENU                                                                  09/11/2007 21:56:46 PAGE 2   

              {  WINDOWS  *mwin;
                 uint8  xx;
              
                 /* 参数过滤 */
                 if( (men->no)==0 ) return;
                 if( no>(men->no) ) return;
                
                 mwin = men->win;                                             // 取得窗口句柄
                 /* 判断是否可以显示主菜单 */
                 if( (mwin->hight)<50 ) return;
                 if( (mwin->with)<50 ) return;
                 
                 /* 显示下划线 */
                 xx = mwin->x + no*MMENU_WIDTH;
                 GUI_HLine(xx+1, mwin->y + 22-1, xx+MMENU_WIDTH- 1, disp_color);
              }
              
              
              /****************************************************************************
              * 名称:GUI_MMenuNSelect()
              * 功能:取消当前主菜单,去除下划线。
              * 入口参数:men         主菜单句柄
              *          no           所选的主菜单项
              * 出口参数:无
              ****************************************************************************/
              void  GUI_MMenuNSelect(MMENU *men, uint8 no)
              {  WINDOWS  *mwin;
                 uint8  xx;
              
                 /* 参数过滤 */
                 if( (men->no)==0 ) return;
                 if( no>(men->no) ) return;
                
                 mwin = men->win;                                             // 取得窗口句柄
                 /* 判断是否可以显示主菜单 */
                 if( (mwin->hight)<50 ) return;
                 if( (mwin->with)<50 ) return;
                 
                 /* 显示下划线 */
                 xx = mwin->x + no*MMENU_WIDTH;
                 GUI_HLine(xx+1, mwin->y + 22-1, xx+MMENU_WIDTH- 1, back_color);
              }
              
              
              
              /****************************************************************************
              * 名称:GUI_SMenuDraw()
              * 功能:显示子菜单,加上边框。
              * 入口参数:men         子菜单句柄
              * 出口参数:返回0表示操作失败,返回1表示操作成功
              ****************************************************************************/
              uint8  GUI_SMenuDraw(SMENU *men)
              {  WINDOWS  *mwin;
                 uint32   xx, yy;
                 uint8    i;
              
                 mwin = men->win;
                 /* 判断是否可以显示主菜单 */
                 if( (mwin->hight)<50 ) return(0);
                 if( (mwin->with)<50 ) return(0);
                  
                 /* 画菜子单项。下拉子菜单,以向左下拉为原则,若右边溢出则以右下拉显示 */
C51 COMPILER V7.50   MENU                                                                  09/11/2007 21:56:46 PAGE 3   

                 xx = mwin->x;
                 xx += (men->mmenu_no)*MMENU_WIDTH;
                 yy = mwin->y + 22;
                 yy +=  (men->no) * 11 + 2;
                 if( (xx+SMENU_WIDTH) <= (mwin->x + mwin->with - 1) ) 
                 {  /* 以左下拉为原则显示子菜单 */
                    if( (men->mmenu_no) == 0 )
                    {  GUI_RLine(xx+SMENU_WIDTH, mwin->y + 22, yy, disp_color);
                       GUI_HLine(xx, yy, xx+SMENU_WIDTH, disp_color);
                    }
                    else
                    {  GUI_Rectangle(xx, mwin->y + 22, xx+SMENU_WIDTH, yy, disp_color);
                    }
                    GUI_HLine(xx+1, mwin->y + 22, xx+MMENU_WIDTH-1, back_color);
                    
                 }
                 else
                 {  /* 以右下拉为原则 */
                    if( (xx+MMENU_WIDTH) == (mwin->x + mwin->with - 1) )
                    {  GUI_RLine(xx-(SMENU_WIDTH-MMENU_WIDTH), mwin->y + 22, yy, disp_color);
                       GUI_HLine(xx-(SMENU_WIDTH-MMENU_WIDTH), yy, xx+MMENU_WIDTH, disp_color);
                       
                    }
                    else
                    {  GUI_Rectangle(xx-(SMENU_WIDTH-MMENU_WIDTH), mwin->y + 22, xx+MMENU_WIDTH, yy, disp_color);
                    }
                    GUI_HLine(xx+1, mwin->y + 22, xx+MMENU_WIDTH-1, back_color);
                    
                    xx = xx-(SMENU_WIDTH-MMENU_WIDTH);
                 }
                 
                 /* 显示菜单文字 */
                 xx++;
                 yy = mwin->y + 22 + 2;
                 for(i=0; i<(men->no); i++)
                 {  if( i == (men->state) )                                                           // 判断所选择的菜单项
                    {  /* 显示背景色 */
                       GUI_RectangleFill(xx, yy, xx+SMENU_WIDTH-2, yy+10, disp_color);
                       /* 显示菜单字符 */
                       GUI_ExchangeColor();
                       GUI_PutNoStr(xx+1, yy+1, men->str[i], 8);                      // 书写子菜单文字
                       GUI_ExchangeColor();
                    }
                    else
                    {  /* 显示背景色 */
                       GUI_RectangleFill(xx, yy, xx+SMENU_WIDTH-2, yy+10, back_color);
                       /* 显示菜单字符 */
                       GUI_PutNoStr(xx+1, yy+1, men->str[i], 8);                      // 书写子菜单文字
                    }   
                    
                    yy += 11;
                 }
                  
                 return(1);
              }
              
              
              
              /****************************************************************************
              * 名称:GUI_SMenuSelect()
              * 功能:选择新的子菜单。
              * 入口参数:men         子菜单句柄
C51 COMPILER V7.50   MENU                                                                  09/11/2007 21:56:46 PAGE 4   

              *          old_no       原先选择的子菜单项
              *                  new_no       现要选择的子菜单项
              * 出口参数:无
              ****************************************************************************/
              void  GUI_SMenuSelect(SMENU *men, uint8 old_no, uint8 new_no)
              {  WINDOWS  *mwin;
                 uint8  xx, yy;
              
                 /* 参数过滤 */ 
                 if(old_no==new_no) return;
                 xx = men->no;
                 if( (old_no>xx) || (new_no>xx) ) return;
                 
                 /* 设置新的选择的子菜单项 */
                 men->state = new_no;
                 
                 /* 进行菜单反相显示 */
                 mwin = men->win;      
                 xx = mwin->x;
                 xx +=  (men->mmenu_no)*MMENU_WIDTH;
                 if( (xx+SMENU_WIDTH) > (mwin->x + mwin->with - 1) ) 
                 {  /* 以右下拉为原则显示子菜单,所以xx设置在左端 */
                    xx = xx-(SMENU_WIDTH-MMENU_WIDTH);
                 }
                 xx++;
               
                 /* 取消原子菜单选择 */  
                 yy = mwin->y + 22 + 2;
                 yy += old_no*11;
                 GUI_RectangleFill(xx, yy, xx+SMENU_WIDTH-2, yy+10, back_color);
                 GUI_PutNoStr(xx+1, yy+1, men->str[old_no], 8);
                 /* 选择新的子菜单 */
                 yy = mwin->y + 22 + 2;
                 yy += new_no*11;
                 GUI_RectangleFill(xx, yy, xx+SMENU_WIDTH-2, yy+10, disp_color);
                 GUI_ExchangeColor();
                 GUI_PutNoStr(xx+1, yy+1, men->str[new_no], 8);
                 GUI_ExchangeColor();
              }
              
              
              
              /****************************************************************************
              * 名称:GUI_SMenuHide()
              * 功能:消隐子菜单项。
              * 入口参数:men         子菜单句柄

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -