📄 test1.c
字号:
/* 连接相应的图标数据 */
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 + -