awakedlg.cpp
来自「个人计算机定时自动执行软件,是 一个值得看看的程序。」· C++ 代码 · 共 835 行 · 第 1/2 页
CPP
835 行
case 5:
case 7:
case 8:
case 10:
case 12:
{
if(day>31)//1.3.5.7.8.10.12月为31天
{
month=month+1;
day=day-31;
if(month>12)
{
year=year+1;
month=month-12;
}
}
break;
}
case 2:
{
if( (year%4==0 && year%100!=0) || (year%400==0) )//判断为润年,
{
if(day>29)//润年2月为29天
{
month=month+1;
day=day-29;
}
}
else
{
if(day>28)//不是润年2月为28天
{
month=month+1;
day=day-28;
}
}
break;
}
case 4:
case 6:
case 9:
case 11:
{
if(day>30)//4.6.9.11月为30天
{
month=month+1;
day=day-30;
}
break;
}
}//end switch
}//end hour if
}//end minute if
}
//////////////////////////////////////////////
//////////////////////////////////////////////
//////////////////////////////////////////////
void CAwakeDlg::OnOneHour() //一小时之后
{
int year = m_mission.set_date_year;
int month = m_mission.set_date_month;
int day = m_mission.set_date_day;
int hour = m_mission.set_time_hour;
hour=hour+1;
HourLate(year,month,day,hour);
m_mission.set_date_year=year;
m_mission.set_date_month=month;
m_mission.set_date_day=day;
m_mission.set_time_hour=hour;
LateSave();
OnOK();
}
void CAwakeDlg::OnTwoHour() //二小时之后
{
int year = m_mission.set_date_year;
int month = m_mission.set_date_month;
int day = m_mission.set_date_day;
int hour = m_mission.set_time_hour;
hour=hour+2;
HourLate(year,month,day,hour);
m_mission.set_date_year=year;
m_mission.set_date_month=month;
m_mission.set_date_day=day;
m_mission.set_time_hour=hour;
LateSave();
OnOK();
}
void CAwakeDlg::OnFourHour() //四小时之后
{
int year = m_mission.set_date_year;
int month = m_mission.set_date_month;
int day = m_mission.set_date_day;
int hour = m_mission.set_time_hour;
hour=hour+4;
HourLate(year,month,day,hour);
m_mission.set_date_year=year;
m_mission.set_date_month=month;
m_mission.set_date_day=day;
m_mission.set_time_hour=hour;
LateSave();
OnOK();
}
void CAwakeDlg::OnEithgHour() //八小时之后
{
int year = m_mission.set_date_year;
int month = m_mission.set_date_month;
int day = m_mission.set_date_day;
int hour = m_mission.set_time_hour;
hour=hour+8;
HourLate(year,month,day,hour);
m_mission.set_date_year=year;
m_mission.set_date_month=month;
m_mission.set_date_day=day;
m_mission.set_time_hour=hour;
LateSave();
OnOK();
}
void CAwakeDlg::HourLate(int &year,int &month,int &day,int &hour)
{
if(hour>=24)//如果小时大于24,则天数加1天,小时减24
{
day=day+1;
hour=hour-24;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
{
if(day>31)//1.3.5.7.8.10.12月为31天
{
month=month+1;
day=day-31;
if(month>12)
{
year=year+1;
month=month-12;
}
}
break;
}
case 2:
{
if( (year%4==0 && year%100!=0) || (year%400==0) )//判断为润年,
{
if(day>29)//润年2月为29天
{
month=month+1;
day=day-29;
}
}
else
{
if(day>28)//不是润年2月为28天
{
month=month+1;
day=day-28;
}
}
break;
}
case 4:
case 6:
case 9:
case 11:
{
if(day>30)//4.6.9.11月为30天
{
month=month+1;
day=day-30;
}
break;
}
}//end switch
}//end hour if
}
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
void CAwakeDlg::OnOneDay() //一天之后
{
int year = m_mission.set_date_year;
int month = m_mission.set_date_month;
int day = m_mission.set_date_day;
day=day+1;
DayLate(year,month,day);
m_mission.set_date_year=year;
m_mission.set_date_month=month;
m_mission.set_date_day=day;
LateSave();
OnOK();
}
void CAwakeDlg::OnTwoDay() //二天之后
{
int year = m_mission.set_date_year;
int month = m_mission.set_date_month;
int day = m_mission.set_date_day;
day=day+2;
DayLate(year,month,day);
m_mission.set_date_year=year;
m_mission.set_date_month=month;
m_mission.set_date_day=day;
LateSave();
OnOK();
}
void CAwakeDlg::OnThreeDay() //三天之后
{
int year = m_mission.set_date_year;
int month = m_mission.set_date_month;
int day = m_mission.set_date_day;
day=day+3;
DayLate(year,month,day);
m_mission.set_date_year=year;
m_mission.set_date_month=month;
m_mission.set_date_day=day;
LateSave();
OnOK();
}
void CAwakeDlg::OnFourDay() //四天之后
{
int year = m_mission.set_date_year;
int month = m_mission.set_date_month;
int day = m_mission.set_date_day;
day=day+4;
DayLate(year,month,day);
m_mission.set_date_year=year;
m_mission.set_date_month=month;
m_mission.set_date_day=day;
LateSave();
OnOK();
}
void CAwakeDlg::OnOneWeek() //一个星期之后
{
int year = m_mission.set_date_year;
int month = m_mission.set_date_month;
int day = m_mission.set_date_day;
day=day+7;
DayLate(year,month,day);
m_mission.set_date_year=year;
m_mission.set_date_month=month;
m_mission.set_date_day=day;
LateSave();
OnOK();
}
void CAwakeDlg::DayLate(int &year,int &month,int &day)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
{
if(day>31)//1.3.5.7.8.10.12月为31天
{
month=month+1;
day=day-31;
if(month>12)
{
year=year+1;
month=month-12;
}
}
break;
}
case 2:
{
if( (year%4==0 && year%100!=0) || (year%400==0) )//判断为润年,
{
if(day>29)//润年2月为29天
{
month=month+1;
day=day-29;
}
}
else
{
if(day>28)//不是润年2月为28天
{
month=month+1;
day=day-28;
}
}
break;
}
case 4:
case 6:
case 9:
case 11:
{
if(day>30)//4.6.9.11月为30天
{
month=month+1;
day=day-30;
}
break;
}
}//end switch
}
///////////////////////////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
void CAwakeDlg::LateSave()//稍后提示的保存文件函数
{
char out_path[512];
GetModuleFileName(NULL,out_path,512);
char *p = strrchr(out_path,'\\');
p[1]='\0';
strcat(out_path,"Mission.dat");
pclockdlg->ClosetoClock();//从主程序调用闹钟设置时,先关闭所有的定时器
CFile file;
if(file.Open(out_path,CFile::modeReadWrite|CFile::typeBinary))
{//将数据存到原数据所在位置,
long listcount=0;
BYTE length[4];
long *plength=(long*)length;
file.Read((void*)length,4);
listcount=*plength;
long size = number*(sizeof(MISSION))+4;//4文件头,很重要
file.Seek(size,CFile::begin);//从指定位置开始写数据
file.Write((void*)&m_mission,sizeof(MISSION));
file.Close();
pclockdlg->FreeData();//先释放所有数据
pclockdlg->LoadData();//从文件中读取数据
}
pclockdlg->ChecktoClock();//再重新设置定时器
}
void CAwakeDlg::OnOK()
{
if(m_image.GetIcon()!=NULL)
DestroyIcon(m_image.GetIcon());
DestroyWindow();
// CDialog::OnOK();
}
void CAwakeDlg::OnCancel()
{
if(m_image.GetIcon()!=NULL)
DestroyIcon(m_image.GetIcon());
DestroyWindow();
// CDialog::OnCancel();
}
void CAwakeDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
CRect rect;
GetWindowRect(&rect);
SetWindowPos(NULL,250,200,rect.Width(),rect.Height(),0);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?