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

📄 test1.c

📁 zlg 的GUI实例
💻 C
📖 第 1 页 / 共 4 页
字号:
   
   /* 连接相应的图标数据 */
   mainmenu[0].icodat = (uint8 *) menuico1;
   mainmenu[0].title = (uint8 *) menuchar1;
   mainmenu[1].icodat = (uint8 *) menuico2;
   mainmenu[1].title = (uint8 *) menuchar2;
   mainmenu[2].icodat = (uint8 *) menuico3;
   mainmenu[2].title = (uint8 *) menuchar3;
   mainmenu[3].icodat = (uint8 *) menuico4;
   mainmenu[3].title = (uint8 *) menuchar4;
   mainmenu[4].icodat = (uint8 *) menuico5;
   mainmenu[4].title = (uint8 *) menuchar5;
   mainmenu[5].icodat = (uint8 *) menuico6;
   mainmenu[5].title = (uint8 *) menuchar6;
   mainmenu[6].icodat = (uint8 *) menuico7;
   mainmenu[6].title = (uint8 *) menuchar7;
   mainmenu[7].icodat = (uint8 *) menuico8;
   mainmenu[7].title = (uint8 *) menuchar8;
      
   /* 连接菜单功能函数 */
   mainmenu[0].Function = (void(*)())DemoLine;
   mainmenu[1].Function = (void(*)())DemoCircle;
   mainmenu[2].Function = (void(*)())DemoArc;
   mainmenu[3].Function = (void(*)())DemoEllipse;
   mainmenu[4].Function = (void(*)())DemoRectang;
   mainmenu[5].Function = (void(*)())DemoPoly;
   mainmenu[6].Function = (void(*)())DemoBmp;
   mainmenu[7].Function = (void(*)())MoveCircle;
 
   /* 设置默认菜单 */
   mainmenu[0].state = 1;
   select = 0;
   
   /* 进行主菜单显示及选择操作 */
   while(1)
   {  for(i=0; i<8; i++)								// 显示图标菜单
      {  GUI_MenuIcoDraw(&mainmenu[i]);
      }
      /* 选择功能 */
      while(1)
      {  key = WaitKey();
         if(key==KEY_OK) break;							// 点击OK键选择
         if(key==KEY_NEXT) 
         {  mainmenu[select].state = 0;					// 取消上一选择
            GUI_MenuIcoDraw(&mainmenu[select]);
            select++;									// 指向下一菜单
            if(select>7) select=0;
			mainmenu[select].state = 1;				
            GUI_MenuIcoDraw(&mainmenu[select]);
         }
         if(key==KEY_BACK) 
         {  mainmenu[select].state = 0;					// 取消上一选择
            GUI_MenuIcoDraw(&mainmenu[select]);
            if(select==0) select=7;
              else  select--;							// 指向下一菜单
			mainmenu[select].state = 1;				
            GUI_MenuIcoDraw(&mainmenu[select]);
         }
      }
      
      /* 执行相应功能 */
      (*mainmenu[select].Function)();
      if(select>=6) GUI_WindowsDraw(&mainwindows);	// 主窗口重绘(清屏)
   }
}


/*--  调入了一幅图像:C:\WINDOWS\Desktop\Critter2.ico  --*/
/*--  宽度x高度=32x32  --*/
uint8  const  critter[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x03,0xF0,0x00,0x00,0x07,0xFC,0x00,0x00,0x0C,0x9F,0x00,0x00,0x1A,0xCF,0x80,0x00,
0x1C,0x8F,0x80,0x00,0x1F,0xFF,0xC0,0x00,0x1F,0xFF,0xE0,0x00,0x0F,0xFF,0xF0,0x00,
0x0F,0xFF,0xF8,0x00,0x07,0xFF,0xFC,0x00,0x03,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0xC0,
0x00,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xC0,
0x1F,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xC0,0x00,0x1F,0xFF,0xC0,
0x00,0x0F,0xFF,0x80,0x00,0x0F,0xFF,0x80,0x00,0x1F,0xFF,0x80,0x00,0x1F,0xFF,0x80,
0x00,0x3F,0xFF,0x80,0x00,0x7F,0x9F,0x00,0x00,0x7F,0x1F,0x00,0x00,0x7E,0x1F,0x00
};

/****************************************************************************
* 名称:RunOpen()
* 功能:执行"Open"菜单命令,打开一个图标。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  RunOpen(void)
{  GUI_LoadPic(105, 70, (uint8 *)critter, 32, 32);
}

/****************************************************************************
* 名称:RunClose()
* 功能:执行"Close"菜单命令,关闭一个图标。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  RunClose(void)
{  GUI_RectangleFill(105, 70, 137, 102, 0);
   
}

/****************************************************************************
* 名称:RunBye()
* 功能:执行"Exit"菜单命令,显示退出信息。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  RunBye(void)
{  GUI_PutString(80, 105, "Goodbye sir!");
   DelayNS(50);
}

/****************************************************************************
* 名称:NotThing()
* 功能:显示执行信息,然后退出。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  NotThing(void)
{  GUI_PutString(80, 105, "Do notthing!");
   DelayNS(50);
   GUI_PutString(80, 105, "            ");
}


/****************************************************************************
* 名称:RunAbout()
* 功能:显示关于信息,然后退出。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  RunAbout(void)
{  GUI_PutString(80, 105, "ZLG_GUI v0.1");
   DelayNS(100);
   GUI_PutString(80, 105, "            ");
}


/****************************************************************************
* 名称:RunMenuDemo()
* 功能:进行菜单的演示操作。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  RunMenuDemo(void)
{  WINDOWS  mainwindows;
   MMENU    mainmenu;
   SMENU    submenu[5];
   uint8    mselect;
   uint8    select, bak;
   uint8    key;
      
   /* 设置主窗口并显示输出 */
   mainwindows.x = 0;									
   mainwindows.y = 0;
   mainwindows.with = 240;
   mainwindows.hight = 128;
   mainwindows.title = (uint8 *) "Down Menu  Demo!";
   mainwindows.state = (uint8 *) "ready    (Let's make things better.)";
   GUI_WindowsDraw(&mainwindows);						// 绘制主窗口	
   
   mainmenu.win = &mainwindows;							// 设置主菜单所属窗口
   mainmenu.no = 5;										// 主菜单项个数
   mainmenu.str[0] = (char *) "File";					// 主菜单项各项字符
   mainmenu.str[1] = (char *) "Edit";
   mainmenu.str[2] = (char *) "View";
   mainmenu.str[3] = (char *) "Find";
   mainmenu.str[4] = (char *) "Help";
   GUI_MMenuDraw(&mainmenu);							// 显示主菜单
   
   /* 子菜单设置 */
   for(bak=0; bak<5; bak++)
   {  submenu[bak].win = &mainwindows;					// 设置菜单所属的窗口
      submenu[bak].mmenu_no = bak;          
      submenu[bak].state = 0;
   }
   
   submenu[0].no = 3;
   submenu[0].str[0] = (char *) "Open";
   submenu[0].str[1] = (char *) "Close";
   submenu[0].str[2] = (char *) "Exit";
   submenu[0].Function[0] = (void(*)()) RunOpen;
   submenu[0].Function[1] = (void(*)()) RunClose;
   submenu[0].Function[2] = (void(*)()) RunBye;
  
   submenu[1].no = 4;
   submenu[1].str[0] = (char *) "Cut";
   submenu[1].str[1] = (char *) "Copy";
   submenu[1].str[2] = (char *) "Paste";
   submenu[1].str[3] = (char *) "Delete";
   submenu[1].Function[0] = (void(*)()) NotThing;
   submenu[1].Function[1] = (void(*)()) NotThing;
   submenu[1].Function[2] = (void(*)()) NotThing;
   submenu[1].Function[3] = (void(*)()) NotThing;

   submenu[2].no = 2;
   submenu[2].str[0] = (char *) "Tools";
   submenu[2].str[1] = (char *) "Font";
   submenu[2].Function[0] = (void(*)()) NotThing;
   submenu[2].Function[1] = (void(*)()) NotThing;
   
   submenu[3].no = 3;
   submenu[3].str[0] = (char *) "Find";
   submenu[3].str[1] = (char *) "Replace";
   submenu[3].str[2] = (char *) "Next";
   submenu[3].Function[0] = (void(*)()) NotThing;
   submenu[3].Function[1] = (void(*)()) NotThing;
   submenu[3].Function[2] = (void(*)()) NotThing;
   submenu[3].Function[3] = (void(*)()) NotThing;   
   
   submenu[4].no = 1;
   submenu[4].str[0] = (char *) "About";
   submenu[4].Function[0] = (void(*)()) RunAbout;
   
   
   /* 进行子菜单1显示及选择操作 */
   mselect = 0;
   while(1)
   {  /* 选择主菜单项 */
      while(1)
      {  GUI_MMenuSelect(&mainmenu, mselect);			// 显示当前主菜单项
         key  = WaitKey();								// 等待按键操作
         if(key==KEY_OK) break;							// 若是OK键,则退出主菜单选择
         if(key==KEY_BACK)								// BACK键操作
         {  if(mselect>0)								
            {  GUI_MMenuNSelect(&mainmenu, mselect); 	// 取消当前主菜单项选择
               mselect--;								// 指向下一主菜单项
            }
         }
         if(key==KEY_NEXT)								// NEXT键操作
         {  if( mselect<(mainmenu.no-1) )						
            {  GUI_MMenuNSelect(&mainmenu, mselect); 	// 取消当前主菜单项选择
               mselect++;								// 指向下一主菜单项
            }
         }         
      }
      GUI_MMenuNSelect(&mainmenu, mselect);
      
      /* 下拉子菜单,选择功能 */
      select = submenu[mselect].state;
      bak = select;
      GUI_SMenuDraw(&submenu[mselect]);					// 显示子菜单
      while(1)
      {  key = WaitKey();
         if(key==KEY_OK) break;							// 点击OK键选择
         if(key==KEY_NEXT) 
         {  bak = select;
            select++;
            if(select>=submenu[mselect].no) select = 0;
            GUI_SMenuSelect(&submenu[mselect], bak, select);
         }
         if(key==KEY_BACK) 
         {  bak = select;
            if(select==0) select = submenu[mselect].no - 1;
              else select--;
            GUI_SMenuSelect(&submenu[mselect], bak, select);
         }
      }
      GUI_SMenuHide(&submenu[mselect]);
      (*submenu[mselect].Function[select])();					// 调用相应的服务程序
      if( (mselect==0) && (select==2) )
      {  break;
      }
   }
}


/***********************************************************************
* 名称:main()
* 功能:主程序,用于GUI测试及演示。
***********************************************************************/
int  main(void)
{  uint8  LPC2210_LOG[8] = {0x0f, 0x00, 0x01, 0x02, 0x02, 0x0c, 0x16, 0x14};
   PointXY test_p[] = { {20,30},
                        {70,60},
                        {100,50},
                        {90,110},
                        {20,30}
                      };
   

   TargetInit();
   
   ZLG7290_SendBuf(LPC2210_LOG,8);
   

   TargetInit();					// 初始化IO设置等(在target.c文件中)
       
   GUI_Initialize();				// 初始化LCM
  
   GUI_Spline(test_p, 5, 1);
   
   GUI_FloodFill(50,80, 1);
  
   GUI_SetColor(1, 0);
   
   DispLog();						// 显示LOG
   
   RunMenuDemo();					// 显示菜单
   
   RunDemo();						// 运行演示程序
   
   while(1);
   return(0);
}

⌨️ 快捷键说明

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