void MainTask1(void *pdata) { pdata=pdata; BSP_Init(); //硬件初始化 GUI_Init(); //GUI初始化 GUI_SetBkColor(GUI_BLACK); //设置彩屏背景颜色为黑色 GUI_Clear(); GUI_TOUCH_Calibrate(0,0,320,296,3854); GUI_TOUCH_Calibrate(1,0,240,249,3906); //屏幕校准 // GUI_CURSOR_Show(); //显示光标 WidgetCreate(); //建立控件 GUI_Exec(); //显示控件 for(;;) { KeyCallback(edit); //响应控件 } }
/*任务二:专门为触屏和控件的更新而建立的任务*/ void Task1(void *pdata) { pdata=pdata; for(;;) { WM_Exec(); //更新窗口 GUI_TOUCH_Exec(); //更新触屏 OSTimeDly(10); } }
b)、计算器图形界面的相关代码
/*GUI相关变量*/ EDIT_Handle edit;
BUTTON_Handle num0,num1,num2,num3,num4,num5,num6,num7,num8,num9;//数字
0~9,
BUTTON_Handle numPoint,numPlus,numSub,numMul,numDiv;//小数点,加号,减号,
除号,乘号
BUTTON_Handle clear,inverse,square,equal,about; //清除,倒数,平方,等于
/*图形界面函数*/
void WidgetCreate(void) { /*画计算器边框*/
6
GUI_SetPenSize(3); GUI_SetColor(GUI_RED); GUI_DrawLine(7,0,7,239); GUI_DrawLine(311,0,311,239); GUI_DrawLine(7,238,311,238); GUI_DrawLine(7,1,311,1);
//设置之前宽度为3个像素 //设置边框颜色为红色 //画边框
edit=EDIT_Create(15,5,225,50,'e',10,WM_CF_SHOW);//创建编辑框 EDIT_SetFont(edit,&GUI_Font32B_ASCII); //设置编辑框内容字体大小
num7=BUTTON_Create(15,60,50,35,'7',WM_CF_SHOW);//创建数字7的按钮 BUTTON_SetFont(num7,&GUI_Font24_ASCII); //设置字体24号 BUTTON_SetText(num7,\ //按钮上显示7 BUTTON_SetTextColor(num7,0,GUI_WHITE); //设置字体颜色 BUTTON_SetBkColor(num7,0,GUI_DARKBLUE); //设置按钮背景颜色 num4=BUTTON_Create(15,105,50,35,'4',WM_CF_SHOW);//创建数字4的按钮 BUTTON_SetFont(num4,&GUI_Font24_ASCII); BUTTON_SetText(num4,\
BUTTON_SetTextColor(num4,0,GUI_WHITE); BUTTON_SetBkColor(num4,0,GUI_DARKBLUE); num1=BUTTON_Create(15,150,50,35,'1',WM_CF_SHOW); //创建数字1的按钮 BUTTON_SetFont(num1,&GUI_Font24_ASCII); BUTTON_SetText(num1,\
BUTTON_SetTextColor(num1,0,GUI_WHITE); BUTTON_SetBkColor(num1,0,GUI_DARKBLUE);
num0=BUTTON_Create(15,195,110,35,'0',WM_CF_SHOW);//创建数字0的按钮 BUTTON_SetFont(num0,&GUI_Font24_ASCII); BUTTON_SetText(num0,\
BUTTON_SetTextColor(num0,0,GUI_WHITE); BUTTON_SetBkColor(num0,0,GUI_DARKBLUE);
num8=BUTTON_Create(74,60,50,35,'8',WM_CF_SHOW); //创建数字8的按钮 BUTTON_SetFont(num8,&GUI_Font24_ASCII); BUTTON_SetText(num8,\
BUTTON_SetTextColor(num8,0,GUI_WHITE); BUTTON_SetBkColor(num8,0,GUI_DARKBLUE);
num5=BUTTON_Create(74,105,50,35,'5',WM_CF_SHOW); //创建数字5的按钮 BUTTON_SetFont(num5,&GUI_Font24_ASCII); BUTTON_SetText(num5,\
BUTTON_SetTextColor(num5,0,GUI_WHITE); BUTTON_SetBkColor(num5,0,GUI_DARKBLUE);
num2=BUTTON_Create(74,150,50,35,'2',WM_CF_SHOW); //创建数字2的按钮 BUTTON_SetFont(num2,&GUI_Font24_ASCII); BUTTON_SetText(num2,\
BUTTON_SetTextColor(num2,0,GUI_WHITE);
7
钮
钮
按钮
BUTTON_SetBkColor(num2,0,GUI_DARKBLUE);
num9=BUTTON_Create(133,60,50,35,'9',WM_CF_SHOW); //创建数字9的按钮 BUTTON_SetFont(num9,&GUI_Font24_ASCII); BUTTON_SetText(num9,\
BUTTON_SetTextColor(num9,0,GUI_WHITE); BUTTON_SetBkColor(num9,0,GUI_DARKBLUE);
num6=BUTTON_Create(133,105,50,35,'6',WM_CF_SHOW);//创建数字6的按钮 BUTTON_SetFont(num6,&GUI_Font24_ASCII); BUTTON_SetText(num6,\
BUTTON_SetTextColor(num6,0,GUI_WHITE); BUTTON_SetBkColor(num6,0,GUI_DARKBLUE);
num3=BUTTON_Create(133,150,50,35,'3',WM_CF_SHOW); //创建数字3的按钮 BUTTON_SetFont(num3,&GUI_Font24_ASCII); BUTTON_SetText(num3,\
BUTTON_SetTextColor(num3,0,GUI_WHITE); BUTTON_SetBkColor(num3,0,GUI_DARKBLUE);
numPoint=BUTTON_Create(133,195,50,35,'.',WM_CF_SHOW);//创建小数点.的按BUTTON_SetFont(numPoint,&GUI_Font24_ASCII); BUTTON_SetText(numPoint,\
BUTTON_SetTextColor(numPoint,0,GUI_WHITE); BUTTON_SetBkColor(numPoint,0,GUI_DARKBLUE);
numDiv=BUTTON_Create(192,60,50,35,'/',WM_CF_SHOW);//创建除号/的按钮 BUTTON_SetFont(numDiv,&GUI_Font24_ASCII); BUTTON_SetText(numDiv,\
numMul=BUTTON_Create(192,105,50,35,'*',WM_CF_SHOW);//创建乘号*的按钮 BUTTON_SetFont(numMul,&GUI_Font24_ASCII); BUTTON_SetText(numMul,\
numSub=BUTTON_Create(192,150,50,35,'-',WM_CF_SHOW);//创建减号-的按钮 BUTTON_SetFont(numSub,&GUI_Font24_ASCII); BUTTON_SetText(numSub,\
numPlus=BUTTON_Create(192,195,50,35,'+',WM_CF_SHOW); //创建加好+的按BUTTON_SetFont(numPlus,&GUI_Font24_ASCII); BUTTON_SetText(numPlus,\
clear=BUTTON_Create(251,60,50,35,'c',WM_CF_SHOW); //创建清除键clear的BUTTON_SetFont(clear,&GUI_Font24_ASCII); BUTTON_SetText(clear,\
BUTTON_SetBkColor(clear,0,GUI_YELLOW);
8
钮
钮
的按钮
inverse=BUTTON_Create(251,105,50,35,'i',WM_CF_SHOW); //创建倒数1/X的按BUTTON_SetFont(inverse,&GUI_Font24_ASCII); BUTTON_SetText(inverse,\
square=BUTTON_Create(251,150,50,35,'s',WM_CF_SHOW);//创建平方X^2的按BUTTON_SetFont(square,&GUI_Font24_ASCII); BUTTON_SetText(square,\
equal=BUTTON_Create(251,195,50,35,'=',WM_CF_SHOW);//创建等号=的按钮 BUTTON_SetFont(equal,&GUI_Font24_ASCII); BUTTON_SetText(equal,\
BUTTON_SetBkColor(equal,0,GUI_YELLOW);
about=BUTTON_Create(249,20,57,30,'a',WM_CF_SHOW); //创建说明信息about
BUTTON_SetFont(about,&GUI_Font24_ASCII); BUTTON_SetText(about,\ BUTTON_SetBkColor(about,0,GUI_LIGHTGRAY); }
c)、按键响应代码
/*按钮响应函数*/
void KeyCallback(EDIT_Handle obj) { /*重画边框,因为控件在最上层,会把下层的图案覆盖掉*/ GUI_SetPenSize(3); GUI_SetColor(GUI_RED); GUI_DrawLine(7,0,7,239); GUI_DrawLine(311,0,311,239); GUI_DrawLine(7,238,311,238); GUI_DrawLine(7,1,311,1); switch (GUI_WaitKey()) { case '0': if(operaFlag==1) //如果是刚操作完运算
符号后的数,先把编辑框清掉
{ EDIT_SetText(obj,NULL); operaFlag=0; } EDIT_GetText(obj,editBuf,10); if((*editBuf!='0')) //保证不会出现001这
样的情况
{ EDIT_AddKey(obj,'0'); } break;
9
的情况
case '1': if(operaFlag==1) { EDIT_SetText(obj,NULL); operaFlag=0; } EDIT_GetText(obj,editBuf,10); if((*editBuf=='0')&&(*(editBuf+1)!='.'))//保证不会出现.123这样
{
EDIT_SetText(obj,NULL);
} EDIT_AddKey(obj,'1'); break; case '2': if(operaFlag==1) { EDIT_SetText(obj,NULL); operaFlag=0; } EDIT_GetText(obj,editBuf,10); if((*editBuf=='0')&&(*(editBuf+1)!='.')) { EDIT_SetText(obj,NULL); } EDIT_AddKey(obj,'2'); break; case '3': if(operaFlag==1) { EDIT_SetText(obj,NULL); operaFlag=0; } EDIT_GetText(obj,editBuf,10); if((*editBuf=='0')&&(*(editBuf+1)!='.')) { EDIT_SetText(obj,NULL); } EDIT_AddKey(obj,'3'); break; case '4': if(operaFlag==1) { EDIT_SetText(obj,NULL); operaFlag=0; } EDIT_GetText(obj,editBuf,10); if((*editBuf=='0')&&(*(editBuf+1)!='.')) { EDIT_SetText(obj,NULL); } EDIT_AddKey(obj,'4');
10