📄 timemanagerview.cpp
字号:
* 描 述: 定时触发该时间
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日 期: 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 + -