1、电子万年历代码/=/文 件 名:Calendar_Interface.c/功能描述: 月历界面/维护记录: 2007年6月17日/=#include SystemHeader.h#include string.hDATE Calendar_Date31;CALENDAR *pCalendar;/=/语法格式:INT8 Calendar_Month(INT16 Year, INT16 Month)/实现功能:(内部函数)对指定月中的每天进行计算,填充Calendar_Date数组/参数: Year: 年/ Month: 月/返回值: 无/=INT8 Calendar_Month(INT16 Ye
2、ar, INT16 Month) INT8 Ret; INT16 i; Ret = Date_GetMonthDays(Year, Month); for(i=1; i=Ret; i+) if(Date_Generate(Year, Month, i, &Calendar_Datei-1)!=0) break; if(iBGImage); / 背景图片 TFT_SetChineseFont(&wCalendar, 0); / 题头 TFT_SetAsciiFont(&wCalendar, 0); TFT_SetColor(&wCalendar, pCalendar-HeadColor); TF
3、T_SetBGColor(&wCalendar, 0); TFT_SetTextPos(&wCalendar, 20, 0); TFT_Print(&wCalendar, %d年%d月, Year, Month); TFT_SetTextPos(&wCalendar, 120, 0); TFT_Print(&wCalendar, 农历%s年(%s年), Calendar_Date0.GanZhiYearStr, Calendar_Date0.AnimalStr); TFT_SetColor(&wCalendar, pCalendar-TableHeadColor); / 星期 for(i=0;
4、 iFirstWeekDay+i)%7)*40 + 12; TFT_SetTextPos(&wCalendar, Tempx, 24); TFT_Print(&wCalendar, %s, T_WeekdayStri); Tempy = 41; TFT_SetAsciiFont(&wCalendar, 1); TFT_SetChineseFont(&wCalendar, 1); for(i=0; iFirstWeekDay+Calendar_Datei.Weekday)%7)*40+1; TFT_SetColor(&wCalendar, pCalendar-TodayColor); TFT_R
5、ectangle(&wCalendar, Tempx, Tempy, Tempx+38, Tempy+38, PAINT_SOLID); TempColor = pCalendar-CommonColor; if( Calendar_Datei.Weekday=0 | Calendar_Datei.Weekday=6) TempColor = pCalendar-WeekendColor; if( (Month=1 & i=0) / 元旦、五一、十一、春节 | (Month=5 & i=0) | (Month=10 & i=0) | (Calendar_Datei.LunarMonth=1 &
6、 Calendar_Datei.LunarDay=1) ) TempColor = pCalendar-WeekendColor; if(iFirstWeekDay+Calendar_Datei.Weekday)%7)*40 + 14; else / 两位数 Tempx = (7-pCalendar-FirstWeekDay+Calendar_Datei.Weekday)%7)*40 + 8; TFT_SetTextPos(&wCalendar, Tempx, Tempy); TFT_SetColor(&wCalendar, TempColor); TFT_Print(&wCalendar,
7、%d, i+1); TempColor = pCalendar-LunarColor; if(Calendar_Datei.Fu&0x00FF)=1) / 伏 strcpy(TempStr, Calendar_Datei.FuStr); TempStr4 = 0; TempColor = pCalendar-SpecialColor; if(Calendar_Datei.Jiu&0x00FF)=1) / 九 strcpy(TempStr, Calendar_Datei.JiuStr); TempStr4 = 0; TempColor = pCalendar-SpecialColor; if(C
8、alendar_Datei.SolarTerm!=-1) / 节气 TempColor = pCalendar-SpecialColor; strcpy(TempStr, Calendar_Datei.SolarTermStr); if(Calendar_Datei.LunarFestivalStr0!=0) / 农历节日 TempColor = pCalendar-SpecialColor; strcpy(TempStr, Calendar_Datei.LunarFestivalStr); if(Calendar_Datei.FestivalStr0!=0) / 公历节日 TempColor
9、 = pCalendar-SpecialColor; strcpy(TempStr, Calendar_Datei.FestivalStr); if(TempColor=pCalendar-LunarColor) / 普通农历 if(Calendar_Datei.LunarDay=1) / 初一显示月号 strcpy(TempStr, Calendar_Datei.LunarMonthStr); if(strlen(TempStr)FirstWeekDay+Calendar_Datei.Weekday)%7*40 + 8; else / 三个字 Tempx = (7-pCalendar-Fir
10、stWeekDay+Calendar_Datei.Weekday)%7*40 + 2; TFT_SetColor(&wCalendar, TempColor); TFT_SetTextPos(&wCalendar, Tempx, Tempy+24); TFT_Print(&wCalendar, TempStr); if(Calendar_Datei.Weekday=(pCalendar-FirstWeekDay+6)%7) / 换行 Tempy += 40; if(Tempy=240) Tempy = 41; /=/语法格式:INT16 Calendar_GetKey(INT16 x, INT
11、16 y)/实现功能:判断坐标是否落在功能按钮上/参数: x: x坐标/ y: y坐标/返回值: 键值/=INT16 Calendar_GetKey(INT16 x, INT16 y) INT16 Tempx, Tempy; INT16 Ret=-1; Tempx = x; Tempy = y; if(Tempx=0 & Tempx=40 & Tempy=283 & Tempx=4 & Tempy=283 & Tempx=44 & Tempy=283 & Tempx=91 & Tempy=283 & Tempx=131 & Tempy=283 & Tempx=196 & TempyFirstW
12、eekDay + 1; if(DayFirstWeekDay; / 最后一格的日期 if(Date_GetMonthDays(Calendar_Date0.Year, Calendar_Date0.Month)Temp) Day = Key + Temp + 1; if(DayDate_GetMonthDays(Calendar_Date0.Year, Calendar_Date0.Month) return; pDate = &Calendar_DateDay-1; TFT_CreateWindow(&wDay, 20, 60, 259, 219, RGB(0xE0, 0xE0, 0xE0)
13、; TFT_SetColor(&wDay, RGB(0xF0, 0x30, 0x00); TFT_Rectangle(&wDay, 0, 0, 239, 159, PAINT_HOLLOW); TFT_SetColor(&wDay, COLOR_MAGENTA); TFT_SetTextPos(&wDay, 10, 10); TFT_Print(&wDay, %4d年%d月%d日 星期%s, pDate-Year, pDate-Month, pDate-Day, T_WeekdayStr(unsigned char)(pDate-Weekday); TFT_SetTextPos(&wDay,
14、10, 34); TFT_SetColor(&wDay, RGB(0x20, 0x20, 0x80); TFT_Print(&wDay, 星座:%s座, pDate-ZodiacStr); TFT_SetTextPos(&wDay, 10, 54); TFT_SetColor(&wDay, RGB(0x20, 0x20, 0x80); TFT_Print(&wDay, 生肖:%s, pDate-AnimalStr); TFT_SetTextPos(&wDay, 10, 74); TFT_SetColor(&wDay, RGB(0x20, 0x20, 0x80); TFT_Print(&wDay
15、, 农历:%s月%s, pDate-LunarMonthStr, pDate-LunarDayStr); TFT_SetTextPos(&wDay, 10, 94); TFT_SetColor(&wDay, RGB(0x20, 0x20, 0x80); TFT_Print(&wDay, 干支:%s年 %s月 %s日, pDate-GanZhiYearStr, pDate-GanZhiMonthStr, pDate-GanZhiDayStr); TFT_CreateWindow(&wFestival, 30, 180, 249, 209, RGB(0xE0, 0xE0, 0xE0); TFT_S
16、etTextPos(&wFestival, 0, 0); TFT_SetColor(&wFestival, COLOR_RED); if(pDate-FestivalStr0!=0) TFT_Print(&wFestival, %s , pDate-FestivalStr); if(pDate-LunarFestivalStr0!=0) TFT_Print(&wFestival, %s , pDate-LunarFestivalStr); if(pDate-SolarTerm != -1) TFT_Print(&wFestival, %s , pDate-SolarTermStr); if(p
17、Date-Fu != 0) TFT_Print(&wFestival, %s , pDate-FuStr); if(pDate-Jiu != 0) TFT_Print(&wFestival, %s , pDate-JiuStr); for(i=0; i1901) Year -= 1; break; case 101: / 下年 if(Year2100) Year += 1; break; case 102: / 上月 Month -= 1; if(Month=0) Month = 12; Year -= 1; if(Year 2100) Year = 2100; Month = 12; break; case 104: / 返回 return; default: Calendar_ShowDay(pCalendar, Key); break; if(Key!=-1) Calendar_Show(pCalendar, Year, Month); .闹铃部分。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1