⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timemanagerview.cpp

📁 该时间管理是模仿酷派628手机上的时间管理书写其功能
💻 CPP
📖 第 1 页 / 共 3 页
字号:
* 描    述: 定时触发该时间
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日    期: 2007/05/22
* 修改记录: 
*     修改人      修改日期      修改描述
*************************************************************
*/ 

void CTimeManagerView::OnTimer(UINT nIDEvent) 
{
	//用于定时修改界面信息
	SetTimeUpdateUI();
	CFormView::OnTimer(nIDEvent);
}


/**
************************************************************* 
* 函 数 名: OnBtnFirstTimeZone()
* 描    述: 用户点击第一时区时触发该事件
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日    期: 2007/05/22
* 修改记录: 
*     修改人      修改日期      修改描述
*************************************************************
*/ 

void CTimeManagerView::OnBtnFirstTimeZone() 
{
	//弹出修改时区界面,用于修改系统时区
	CUpdateTimeZone updateTimeZoneUI(GetTimeZoneName());
	updateTimeZoneUI.DoModal();
	
	CString strShowZoneName(GetTimeZoneName());
	//显示系统时区名
	if (strShowZoneName.GetLength() >21)
	{
		strShowZoneName = strShowZoneName.Mid(0,20) + _T("...");
	}
	m_btnFirstTimeZone.SetWindowText(strShowZoneName);

	//显示系统时间
	m_ctrlFirstClock.setTimeZoneDiffer(0,0);

	m_bUpdateMMTimeUI = TRUE;
	m_bUpdateDayTimeUI = TRUE;
}


/**
************************************************************* 
* 函 数 名: OnBtnSecond()
* 描    述: 用户点击第二时区按钮时触发该事件
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日    期: 2007/05/22
* 修改记录: 
*     修改人      修改日期      修改描述
*************************************************************
*/ 

void CTimeManagerView::OnBtnSecond() 
{
	//弹出修改时区界面
	COtherTimeZone OtherTimeZoneUI(m_strSelSecondTimeZoneName);
	OtherTimeZoneUI.DoModal();

	//如果用户点击了修改界面的Ok按钮
	if (1 == OtherTimeZoneUI.GetIsUPdateOtherTimeZone())
	{
		//获取用户选择的时区名,并将它赋值给m_strSelSecondTimeZoneName
		m_strSelSecondTimeZoneName = OtherTimeZoneUI.GetSelTimeZoneName();

		//将用户选择的时区名先生在界面上
		//将时区名显示在界面上
		CString strWorldZoneName(m_strSelSecondTimeZoneName);
		if(strWorldZoneName.GetLength() > 18)
		{
			strWorldZoneName = strWorldZoneName.Mid(0,17) + _T("...");
		}
		m_btnSecond.SetWindowText(strWorldZoneName);
		//计算该第二时区的时间、星期、日期
		GetWorldTimeZoneInfo(m_strSelSecondTimeZoneName,m_iSecondYear, m_iSecondMonth,m_iSecondWeek, m_iSecondDay,m_iSecondHour,m_iSecondMinute, m_iSecondHourDiff, m_iSecondMintueDiff, m_ctrlSecondClock);

		//修改配置文件
		CRWini RWini;
		RWini.OpenIniFile(STR_TIMEMANAGER_CONFIG_FILE_PATH);
		RWini.WriteProfileString("TimeManager","SecondTimeZoneName",m_strSelSecondTimeZoneName);
	}

	m_bUpdateMMTimeUI = TRUE;
	m_bUpdateDayTimeUI = TRUE;
	Invalidate(TRUE);
}

/**
************************************************************* 
* 函 数 名: UpdateSysTime(const unsigned int& Year,const unsigned int& Month,const unsigned int& Day)
* 描    述: 修改系统时间(年、月、日)
* 数 据 库: 无
* 数据库表: 无
* 输入参数: Year:年,Month:月,Day:日
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日    期: 2007/05/22
* 修改记录: 
*     修改人      修改日期      修改描述
*************************************************************
*/ 
/*
void CTimeManagerView::UpdateSysTime(const unsigned int& Year,const unsigned int& Month,const unsigned int& Day)
//void CTimeManagerView::UpdateSysTime(int Year,int Month,int Day)
{
	TIME_ZONE_INFORMATION  SysTime;
	GetSystemTime(&SysTime.DaylightDate);
	SysTime.DaylightDate.wYear  = Year;
	SysTime.DaylightDate.wMonth = Month;
	SysTime.DaylightDate.wDay   = Day;
	SysTime.DaylightDate.wHour  = SysTime.DaylightDate.wHour;
	//SysTime.DaylightDate.wDayOfWeek;
    SysTime.DaylightDate.wMinute = SysTime.DaylightDate.wMinute;
	SysTime.DaylightDate.wSecond = SysTime.DaylightDate.wSecond;
	SetSystemTime(&SysTime.DaylightDate);
}
*/

/**
************************************************************* 
* 函 数 名: GetLunarDate(int iYear,int iMonth,int iDay)
* 描    述: 根据阳历的年、月、日获得阴历年、月、日
* 数 据 库: 无
* 数据库表: 无
* 输入参数: iYear: 阳历年,iMonth:阳历月,iDay:阳历日
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日    期: 2007/05/22
* 修改记录: 
*     修改人      修改日期      修改描述
*************************************************************
*/ 

void CTimeManagerView::GetLunarDate(int iYear,int iMonth,int iDay)
{   
	CCalendarPage* getLunarTime = new CCalendarPage();
	m_sticLunarDate.SetWindowText(getLunarTime->GetLunarDate(iYear,iMonth,iDay));
	delete getLunarTime;
}


/**
************************************************************* 
* 函 数 名: OnBtnThird()
* 描    述: 用户点击第三时区按钮时触发该事件
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日    期: 2007/05/22
* 修改记录: 
*     修改人      修改日期      修改描述
*************************************************************
*/ 

void CTimeManagerView::OnBtnThird() 
{
	//获取用户选择的时区名
	COtherTimeZone OtherTimeZoneUI(m_strSelThirdTimeZoneName);
	OtherTimeZoneUI.DoModal();
	if (1 == OtherTimeZoneUI.GetIsUPdateOtherTimeZone())
	{
		m_strSelThirdTimeZoneName = OtherTimeZoneUI.GetSelTimeZoneName();

		CString strWorldZoneName(m_strSelThirdTimeZoneName);
		if(strWorldZoneName.GetLength() > 18)
		{
			strWorldZoneName = strWorldZoneName.Mid(0,17) + _T("...");
		}
		//m_btnThird.SetWindowText(strWorldZoneName);

		GetWorldTimeZoneInfo(m_strSelThirdTimeZoneName,m_iThirdYear, m_iThirdMonth,m_iThirdWeek, m_iThirdDay,m_iThirdHour, m_iThirdMinute, m_iThirdHourDiff, m_iThirdMinuteDiff, m_ctrlThirdClock);
		
		//修改配置文件
		CRWini RWini;
		RWini.OpenIniFile(STR_TIMEMANAGER_CONFIG_FILE_PATH);
		RWini.WriteProfileString("TimeManager","ThirdTimeZoneName",m_strSelThirdTimeZoneName);
	}
	
	//GetThirdTimeInfoInTimeZone();

	m_bUpdateMMTimeUI = TRUE;
	m_bUpdateDayTimeUI = TRUE;
}


/**
************************************************************* 
* 函 数 名: GetSecnodTimeZoneDiffer()
* 描    述: 计算用户选择的第二时区与系统时区的时差
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无 
* 输出参数: 无
* 返 回 值: 返回第二时区与系统时区的时差值
* 创 建 人: 袁军
* 日    期: 2007/05/22
* 修改记录: 
*     修改人      修改日期      修改描述
*************************************************************
*/ 
void CTimeManagerView::GetWorldZoneDiffer(CString strWorldZoneName, int& iHourDiff, int& iMinuteDiff)
{
	//定义一个标记。用于记录世界时区与标志时区的时差是正数还是?
	int iZoneSing(0);
	iHourDiff   = 0;
	iMinuteDiff = 0;
	//世界时区的小时数
	int j = strWorldZoneName.FindOneOf(_T(")"));
	CString strOtherTimeZone = strWorldZoneName.Mid(4,j-4);
	iHourDiff = _wtoi(strOtherTimeZone);

	//世界时区的分钟数
	if (strOtherTimeZone.GetLength() > 4)
	{
		CString strMintue(strOtherTimeZone.Mid(4));
		iMinuteDiff = _wtoi(strMintue);
		if (iHourDiff < 0)
		{
			iMinuteDiff = -iMinuteDiff;
		}
	}

	LONG iBias = GetSysBias();
	int iSysTimeZone;
	iSysTimeZone = -iBias/60;
	//获取系统与标志时区的时差:小时
//	int n = m_strSysTimeZone.FindOneOf(_T(")"));
//	CString strSysTimeZone = m_strSysTimeZone.Mid(4,n-4);
// 	int iSysTimeZone = _wtoi(strSysTimeZone);
	iHourDiff = iHourDiff - iSysTimeZone;

	int iSysMintue(0);
	//获取系统与标志时区的时差:分钟
//	if (strSysTimeZone.GetLength() > 4)
//	{
//		CString strSysMintue(strSysTimeZone.Mid(4));
//		
//		iSysMintue = _wtoi(strSysMintue);
//  	}
	iSysMintue = iBias%60;
	if (iSysTimeZone < 0)
	{
		iSysMintue = -iSysMintue;
	}
	iMinuteDiff = iMinuteDiff - iSysMintue;
}


/**
************************************************************* 
* 函 数 名: GetSecnodTimeInfoInTimeZone()
* 描    述: 根据用户选择的时区名计算该时区的日期、星期、时间
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日    期: 2007/05/22
* 修改记录: 
*     修改人      修改日期      修改描述
*************************************************************
*/ 

void CTimeManagerView::GetWorldTimeZoneInfo(CString strWorldZoneName,int& iYear, int& iMonth,int& iWeek, int& iDay,int& iHour,int& iMinute, int& iHourDiff, int& iMinuteDiff, CClockCtrl& clock)
{
	//获取用户选择的第二时区与系统时区的时差
	GetWorldZoneDiffer(strWorldZoneName,iHourDiff,iMinuteDiff);

	//获取系统时区信息
	SYSTEMTIME  SysTime;
	//获取系统时间信息,包括:年、月、日、星期、分、秒
	GetSystemTime(&SysTime);
	COleDateTime nSysTime(SysTime.wYear,SysTime.wMonth,SysTime.wDay,SysTime.wHour,SysTime.wMinute,SysTime.wSecond);
	COleDateTime nSecondTime;
	COleDateTimeSpan timeSpan(0,iHourDiff,iMinuteDiff,0);
	nSecondTime = nSysTime + timeSpan;
//	CString strYear,strMonth,strDay,strHour,strMinute,strDayOfWeek;
	iYear = nSecondTime.GetYear();
	iMonth = nSecondTime.GetMonth();
	iDay = nSecondTime.GetDay();
	iHour = nSecondTime.GetHour();
	iMinute = nSecondTime.GetMinute();
	iWeek = nSecondTime.GetDayOfWeek();
	//根据第二时区时差设置钟表时间
	clock.setTimeZoneDiffer(iHourDiff,iMinuteDiff);
}

/**
************************************************************* 
* 函 数 名: OnPaint()
* 描    述: 该函数用于初时化时向界面绘图
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日    期: 2007/07/05
* 修改记录: 
*     修改人      修改日期      修改描述
*************************************************************
*/ 

void CTimeManagerView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting

	int iSaveDC = dc.SaveDC();
	CPen penBorder(PS_SOLID, 1, RGB(25, 123, 150));
	HGDIOBJ oldObj = dc.SelectObject(&penBorder);

	//绘制线条
	dc.MoveTo(95, 55);
	dc.LineTo(159, 55);		

	dc.MoveTo(0,109);
	dc.LineTo(240, 109);
	dc.RestoreDC(iSaveDC);
	SetUIFont(-1);
	dc.SelectObject(oldObj);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -