电子万年历代码文档格式.docx

上传人:b****7 文档编号:22145490 上传时间:2023-02-02 格式:DOCX 页数:59 大小:29.54KB
下载 相关 举报
电子万年历代码文档格式.docx_第1页
第1页 / 共59页
电子万年历代码文档格式.docx_第2页
第2页 / 共59页
电子万年历代码文档格式.docx_第3页
第3页 / 共59页
电子万年历代码文档格式.docx_第4页
第4页 / 共59页
电子万年历代码文档格式.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

电子万年历代码文档格式.docx

《电子万年历代码文档格式.docx》由会员分享,可在线阅读,更多相关《电子万年历代码文档格式.docx(59页珍藏版)》请在冰豆网上搜索。

电子万年历代码文档格式.docx

=0)

break;

}

if(i<

=Ret)Ret=-1;

returnRet;

}

voidCalendar_Show(CALENDAR*pCalendarWindow,INT16Year,INT16Month)

显示月历

pCalendarWindow:

月历配置结构体

//Year:

INT16Tempx,Tempy,TempColor,i;

INT8Days;

INT8TempStr[20];

STR_WINDOWwCalendar;

STR_FONTFontCn12={12,12,RES_HZK12};

STR_FONTFontAsc24={12,24,RES_ASC24};

CLOCKNow;

INT8*T_WeekdayStr[]={

"

日"

"

一"

二"

三"

四"

五"

六"

};

pCalendar=pCalendarWindow;

Days=Calendar_Month(Year,Month);

TFT_CreateWindow(&

wCalendar,0,0,319,239,0);

TFT_LoadAsciiFont(&

wCalendar,&

FontAsc24);

TFT_LoadChineseFont(&

FontCn12);

TFT_PutBitMap(&

wCalendar,0,0,pCalendar->

BGImage);

//背景图片

TFT_SetChineseFont(&

wCalendar,0);

//题头

TFT_SetAsciiFont(&

TFT_SetColor(&

wCalendar,pCalendar->

HeadColor);

TFT_SetBGColor(&

TFT_SetTextPos(&

wCalendar,20,0);

TFT_Print(&

wCalendar,"

%d年%d月"

Year,Month);

wCalendar,120,0);

农历%s年(%s年)"

Calendar_Date[0].GanZhiYearStr,Calendar_Date[0].AnimalStr);

TableHeadColor);

//星期

for(i=0;

7;

Tempx=((7-pCalendar->

FirstWeekDay+i)%7)*40+12;

TFT_SetTextPos(&

wCalendar,Tempx,24);

TFT_Print(&

%s"

T_WeekdayStr[i]);

Tempy=41;

wCalendar,1);

Days;

i++)//日历项

Clock_Get(&

Now);

if(Year==Now.Year&

&

Month==Now.Mon&

i==Now.Day-1)//今日

{

Tempx=((7-pCalendar->

FirstWeekDay+Calendar_Date[i].Weekday)%7)*40+1;

TFT_SetColor(&

TodayColor);

TFT_Rectangle(&

wCalendar,Tempx,Tempy,Tempx+38,Tempy+38,PAINT_SOLID);

}

TempColor=pCalendar->

CommonColor;

if(Calendar_Date[i].Weekday==0||Calendar_Date[i].Weekday==6)

TempColor=pCalendar->

WeekendColor;

if((Month==1&

i==0)//元旦、五一、十一、春节

||(Month==5&

i==0)

||(Month==10&

||(Calendar_Date[i].LunarMonth==1&

Calendar_Date[i].LunarDay==1))

if(i<

9)//一位数

FirstWeekDay+Calendar_Date[i].Weekday)%7)*40+14;

else//两位数

FirstWeekDay+Calendar_Date[i].Weekday)%7)*40+8;

wCalendar,Tempx,Tempy);

TFT_SetColor(&

wCalendar,TempColor);

%d"

i+1);

LunarColor;

if((Calendar_Date[i].Fu&

0x00FF)==1)//伏

strcpy(TempStr,Calendar_Date[i].FuStr);

TempStr[4]='

\0'

;

SpecialColor;

if((Calendar_Date[i].Jiu&

0x00FF)==1)//九

strcpy(TempStr,Calendar_Date[i].JiuStr);

if(Calendar_Date[i].SolarTerm!

=-1)//节气

strcpy(TempStr,Calendar_Date[i].SolarTermStr);

if(Calendar_Date[i].LunarFestivalStr[0]!

='

)//农历节日

strcpy(TempStr,Calendar_Date[i].LunarFestivalStr);

if(Calendar_Date[i].FestivalStr[0]!

)//公历节日

strcpy(TempStr,Calendar_Date[i].FestivalStr);

if(TempColor==pCalendar->

LunarColor)//普通农历

if(Calendar_Date[i].LunarDay==1)//初一显示月号

{

strcpy(TempStr,Calendar_Date[i].LunarMonthStr);

if(strlen(TempStr)<

=4)

strcat(TempStr,"

月"

);

}

else

strcpy(TempStr,Calendar_Date[i].LunarDayStr);

if(strlen(TempStr)==4)//两个字

Tempx=(7-pCalendar->

FirstWeekDay+Calendar_Date[i].Weekday)%7*40+8;

else//三个字

FirstWeekDay+Calendar_Date[i].Weekday)%7*40+2;

wCalendar,Tempx,Tempy+24);

wCalendar,TempStr);

if(Calendar_Date[i].Weekday==(pCalendar->

FirstWeekDay+6)%7)//换行

Tempy+=40;

if(Tempy>

=240)Tempy=41;

INT16Calendar_GetKey(INT16x,INT16y)

判断坐标是否落在功能按钮上

x:

x坐标

//y:

y坐标

键值

INT16Tempx,Tempy;

INT16Ret=-1;

Tempx=x;

Tempy=y;

if(Tempx>

=0&

Tempx<

280&

Tempy>

=40&

Tempy<

240)//日历区域

Ret=Tempx/40+(Tempy-40)/40*7;

elseif(Tempx>

=283&

=316&

=4&

=37)//前一年

Ret=100;

=44&

=77)//后一年

Ret=101;

=91&

=124)//后一月

Ret=102;

=131&

=164)//后一月

Ret=103;

=196&

=229)//返回

Ret=104;

voidCalendar_ShowDay(CALENDAR*pCalendar,INT16Key)

STR_WINDOWwDay,wFestival;

INT16x,y,Day,Temp;

INT32i;

DATE*pDate;

Day=Key-Calendar_Date[0].Weekday+pCalendar->

FirstWeekDay+1;

if(Day<

1)//检查3x号移动到第一行的情况

Temp=35-Calendar_Date[0].Weekday+pCalendar->

FirstWeekDay;

//最后一格的日期

if(Date_GetMonthDays(Calendar_Date[0].Year,Calendar_Date[0].Month)>

Temp)

Day=Key+Temp+1;

1||Day>

Date_GetMonthDays(Calendar_Date[0].Year,Calendar_Date[0].Month))

return;

pDate=&

Calendar_Date[Day-1];

wDay,20,60,259,219,RGB(0xE0,0xE0,0xE0));

wDay,RGB(0xF0,0x30,0x00));

TFT_Rectangle(&

wDay,0,0,239,159,PAINT_HOLLOW);

wDay,COLOR_MAGENTA);

wDay,10,10);

wDay,"

%4d年%d月%d日星期%s"

pDate->

Year,pDate->

Month,pDate->

Day,T_WeekdayStr[(unsignedchar)(pDate->

Weekday)]);

wDay,10,34);

wDay,RGB(0x20,0x20,0x80));

星座:

%s座"

ZodiacStr);

wDay,10,54);

生肖:

AnimalStr);

wDay,10,74);

农历:

%s月%s"

LunarMonthStr,pDate->

LunarDayStr);

wDay,10,94);

干支:

%s年%s月%s日"

GanZhiYearStr,pDate->

GanZhiMonthStr,pDate->

GanZhiDayStr);

wFestival,30,180,249,209,RGB(0xE0,0xE0,0xE0));

wFestival,0,0);

wFestival,COLOR_RED);

if(pDate->

FestivalStr[0]!

wFestival,"

%s"

FestivalStr);

LunarFestivalStr[0]!

LunarFestivalStr);

SolarTerm!

=-1)

SolarTermStr);

Fu!

=0)

FuStr);

Jiu!

JiuStr);

1000000;

i++);

while

(1)

Touch_Get(&

x,&

y);

if(x!

=-1)

voidCalendar_Interface(CALENDAR*pCalendar)

月历界面

pCalendar:

externINT16gFrameType;

CLOCKClock;

INT16Year,Month,x,y,Key;

gFrameType=1;

Clock_Get(&

Clock);

Year=Clock.Year;

Month=Clock.Mon;

Calendar_Show(pCalendar,Year,Month);

Key=Calendar_GetKey(x,y);

switch(Key)

case-1:

break;

case100:

//上年

if(Year>

1901)Year-=1;

case101:

//下年

if(Year<

2100)Year+=1;

case102:

//上月

Month-=1;

if(Month==0)

{

Month=12;

Year-=1;

if(Year<

1901)

{

Year=1901;

Month=1;

}

}

case103:

//下月

Month+=1;

if(Month==13)

Month=1;

Year+=1;

if(Year>

2100)

Year=2100;

Month=12;

case104:

//返回

return;

default:

Calendar_ShowDay(pCalendar,Key);

if(Key!

Calendar_Show(pCalendar,Year,Month);

……………………………………………………………………………………………………………………….闹铃部分。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1