📄 settimearea.c
字号:
#include "..\inc\drv\Rtc.h"#include "..\inc\drv\Display.h"#include "..\ucos-ii\add\control.h"#include "..\inc\resource.h"#include "..\inc\SetTimeArea.h"#define STStatus_SetSelect 0#define STStatus_SetTime 1#define STStatus_SetDate 2PTextCtrl pDateTextCtrl;PTextCtrl pTimeTextCtrl;U32 SetTimeStatus;extern U32 mainstatus;extern PTextCtrl pStatusTextCtrl;void CreateSetTimeArea(U8 IsShow){ static char TimeKeyTable[]={'1','2','3',0,'4','5','6',0,'7','8','9',0,':','0','\b',0}; U16 strtime[11]={0,}; structRECT rect;// structTime time; SetRect(&rect, 150,20,250,40); //创建日期文本框 pDateTextCtrl=CreateTextCtrl(ID_SetDate_TextCtrl, &rect, FONTSIZE_MIDDLE, CTRL_STYLE_FRAME,NULL,NULL); Rtc_Format("20%Y.%M.%D",strtime); SetTextCtrlText(pDateTextCtrl, strtime,IsShow); SetRect(&rect, 150,50,250,70); //创建日期文本框 pTimeTextCtrl=CreateTextCtrl(ID_SetTime_TextCtrl, &rect, FONTSIZE_MIDDLE, CTRL_STYLE_FRAME,TimeKeyTable,NULL); Rtc_Format("%H:%I:%S",strtime); SetTextCtrlText(pTimeTextCtrl, strtime,IsShow); SetTimeStatus=STStatus_SetSelect;}void DestorySetTimeArea(){ PDC pdc; pdc=CreateDC(); DestoryTextCtrl(pDateTextCtrl); DestoryTextCtrl(pTimeTextCtrl); FillRect(pdc, 150, 20, 319, 150, GRAPH_MODE_NORMAL, COLOR_WHITE); ReDrawOSCtrl(); DestoryDC(pdc);}void SetTimeSetFocus(){ SetWndCtrlFocus(NULL, ID_SetDate_TextCtrl);}void SetTimeUp(){ switch(SetTimeStatus){ case STStatus_SetSelect: if(GetWndCtrlFocus(NULL)==ID_SetTime_TextCtrl){ SetWndCtrlFocus(NULL, ID_SetDate_TextCtrl); DrawTextCtrl(pTimeTextCtrl); DrawTextCtrl(pDateTextCtrl); } break; }}void SetTimeDown(){ switch(SetTimeStatus){ case STStatus_SetSelect: if(GetWndCtrlFocus(NULL)==ID_SetDate_TextCtrl){ SetWndCtrlFocus(NULL, ID_SetTime_TextCtrl); DrawTextCtrl(pTimeTextCtrl); DrawTextCtrl(pDateTextCtrl); } break; }}void SetFormatTime() //设定格式化以后的时间{ U16* ptext=pTimeTextCtrl->text; U32 tmp[3],i; structClock clock; for(i=0;i<3;i++){ tmp[i]=0; while(*ptext && *ptext !=':'){ tmp[i]<<=4; tmp[i]|=(*ptext)-'0'; ptext++; } ptext++; } clock.hour=tmp[0]; clock.minute=tmp[1]; clock.second=tmp[2]; Set_Rtc_Clock(&clock); SetTextCtrlEdit(pTimeTextCtrl, FALSE); DrawTextCtrl(pTimeTextCtrl); SetTimeStatus=STStatus_SetSelect;}void SetFormatDate() //设定格式化以后的日期{ U16* ptext=pDateTextCtrl->text; U32 tmp[3],i; structDate date; for(i=0;i<3;i++){ tmp[i]=0; while(*ptext && *ptext !='.'){ tmp[i]<<=4; tmp[i]|=(*ptext)-'0'; ptext++; } ptext++; } date.year=tmp[0]&0xff; date.month=tmp[1]; date.day=tmp[2]; Set_Rtc_Date(&date); SetTextCtrlEdit(pDateTextCtrl, FALSE); DrawTextCtrl(pDateTextCtrl); SetTimeStatus=STStatus_SetSelect;}void SetTimeOK(){ switch(SetTimeStatus){ case STStatus_SetSelect: if(GetWndCtrlFocus(NULL)==ID_SetDate_TextCtrl){ SetTimeStatus=STStatus_SetDate; pDateTextCtrl->text[0]=0; SetTextCtrlEdit(pDateTextCtrl, TRUE); DrawTextCtrl(pDateTextCtrl); } else if(GetWndCtrlFocus(NULL)==ID_SetTime_TextCtrl){ SetTimeStatus=STStatus_SetTime; pTimeTextCtrl->text[0]=0; SetTextCtrlEdit(pTimeTextCtrl, TRUE); DrawTextCtrl(pTimeTextCtrl); } break; case STStatus_SetTime: SetFormatTime(); //设定格式化以后的时间 break; case STStatus_SetDate: SetFormatDate(); //设定格式化以后的日期 break; }}extern U16* MainTip[];void SetTimeCancel(){ U16 strtime[11]; switch(SetTimeStatus){ case STStatus_SetDate: SetTextCtrlEdit(pDateTextCtrl, FALSE); Rtc_Format("20%Y.%M.%D",strtime); SetTextCtrlText(pDateTextCtrl, strtime,TRUE); SetTimeStatus=STStatus_SetSelect; break; case STStatus_SetTime: SetTextCtrlEdit(pTimeTextCtrl, FALSE); Rtc_Format("%H:%I:%S",strtime); SetTextCtrlText(pTimeTextCtrl, strtime,TRUE); SetTimeStatus=STStatus_SetSelect; break; case STStatus_SetSelect: DestorySetTimeArea(); mainstatus=MAIN_MENU; SetTextCtrlText(pStatusTextCtrl, MainTip[0],TRUE); SetWndCtrlFocus(NULL, ID_MainListBox); break; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -