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 + -
显示快捷键?