📄 timemanagerview.cpp
字号:
GetWorldTimeZoneInfo(m_strSelThirdTimeZoneName,m_iThirdYear, m_iThirdMonth,m_iThirdWeek, m_iThirdDay,m_iThirdHour, m_iThirdMinute, m_iThirdHourDiff, m_iThirdMinuteDiff, m_ctrlThirdClock);
//GetThirdTimeInfoInTimeZone();
m_bUpdateDayTimeUI = FALSE;
//将系统的星期提取出来赋值给变量m_strDayOfWeek
m_strDayOfWeek = m_strWeek[m_iDayOfWeek];
//将周信息显示在界面上
m_sticDayWeek.SetWindowText(m_strDayOfWeek);
//将系统时区信息的Int型转化为CString类型
m_strYear.Format(_T("%d"), m_iYear);
m_strMonth.Format(_T("%02d"), m_iMonth);
m_strDay.Format(_T("%02d"), m_iDay);
//组合系统时区的年、月、日信息
CString strSysYearMonthDay = m_strYear + "-" + m_strMonth + "-" + m_strDay;
//将系统年、月、日信息先生在界面上
m_sticMonthDay.SetWindowText(strSysYearMonthDay);
//显示系统阴历时间
//yuanjun
GetLunarDate(m_iYear,m_iMonth,m_iDay);
//////////////////////////////////////////////////////////////////////////
//////////////////////////////第二时区信息////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//SetUIFont();
//显示第二时区星期
m_sticSecondWeek.SetWindowText(m_strWeek[m_iSecondWeek-1]);
//显示第二时区日期
CString strSecondYear,strSecondMonth,strSecondDay,strSecondDateInfo;
strSecondYear.Format(_T ("%d"), m_iSecondYear);
strSecondMonth.Format(_T ("%02d"), m_iSecondMonth);
strSecondDay.Format(_T ("%02d"), m_iSecondDay);
strSecondDateInfo = strSecondYear + _T("-") + strSecondMonth + _T("-") + strSecondDay;
m_sticSecondDay.SetWindowText(strSecondDateInfo);
//////////////////////////////////////////////////////////////////////////
//////////////////////////////第三时区信息////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//显示第三时区星期
m_sticThirdWeek.SetWindowText(m_strWeek[m_iThirdWeek-1]);
//显示第三时区日期
CString strThirdYear,strThirdMonth,strThirdDay,strThirdDateInfo;
strThirdYear.Format(_T ("%d"), m_iThirdYear);
strThirdMonth.Format(_T ("%02d"), m_iThirdMonth);
strThirdDay.Format(_T ("%02d"), m_iThirdDay);
strThirdDateInfo = strThirdYear + _T("-") + strThirdMonth + _T("-") + strThirdDay;
m_sticThirdDay.SetWindowText(strThirdDateInfo);
///////////////////////////////////////////////////////////////
}
if (0 == iSecond)
{
//获取第二时区时间
CString strSecondZoneTime;
m_sticSecondTime.GetWindowText(strSecondZoneTime);
if (strSecondZoneTime == _T("00:00"))
{
m_bUpdateDayTimeUI = FALSE;
//第二时区的时间
GetWorldTimeZoneInfo(m_strSelSecondTimeZoneName,m_iSecondYear, m_iSecondMonth,m_iSecondWeek, m_iSecondDay,m_iSecondHour, m_iSecondMinute, m_iSecondHourDiff, m_iSecondMintueDiff, m_ctrlSecondClock);
m_sticSecondWeek.SetWindowText(m_strWeek[m_iSecondWeek-1]);
//显示第二时区日期
CString strSecondYear,strSecondMonth,strSecondDay,strSecondDateInfo;
strSecondYear.Format(_T ("%d"), m_iSecondYear);
strSecondMonth.Format(_T ("%02d"), m_iSecondMonth);
strSecondDay.Format(_T ("%02d"), m_iSecondDay);
strSecondDateInfo = strSecondYear + _T("-") + strSecondMonth + _T("-") + strSecondDay;
m_sticSecondDay.SetWindowText(strSecondDateInfo);
}
//获取第三时区时间
CString strThirdZoneTime;
m_sticThirdTime.GetWindowText(strThirdZoneTime);
if (strThirdZoneTime == _T("00:00"))
{
m_bUpdateDayTimeUI = FALSE;
//第三时区的时间
GetWorldTimeZoneInfo(m_strSelThirdTimeZoneName,m_iThirdYear, m_iThirdMonth,m_iThirdWeek, m_iThirdDay,m_iThirdHour, m_iThirdMinute, m_iThirdHourDiff, m_iThirdMinuteDiff, m_ctrlThirdClock);
//显示第三时区星期
m_sticThirdWeek.SetWindowText(m_strWeek[m_iThirdWeek-1]);
//显示第三时区日期
CString strThirdYear,strThirdMonth,strThirdDay,strThirdDateInfo;
strThirdYear.Format(_T ("%d"), m_iThirdYear);
strThirdMonth.Format(_T ("%02d"), m_iThirdMonth);
strThirdDay.Format(_T ("%02d"), m_iThirdDay);
strThirdDateInfo = strThirdYear + _T("-") + strThirdMonth + _T("-") + strThirdDay;
m_sticThirdDay.SetWindowText(strThirdDateInfo);
}
}
}
void CTimeManagerView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTimeManagerView)
DDX_Control(pDX, IDC_BTN_SECOND, m_btnSecond);
DDX_Control(pDX, IDC_BTN_THIRD, m_btnThird);
DDX_Control(pDX, IDC_STIC_SECOND_DAY, m_sticSecondDay);
DDX_Control(pDX, IDC_STIC_SECOND_TIME, m_sticSecondTime);
DDX_Control(pDX, IDC_STIC_SECOND_WEEK, m_sticSecondWeek);
DDX_Control(pDX, IDC_STIC_THIRD_DAY, m_sticThirdDay);
DDX_Control(pDX, IDC_STIC_THIRD_TIME, m_sticThirdTime);
DDX_Control(pDX, IDC_STIC_THIRD_WEEK, m_sticThirdWeek);
DDX_Control(pDX, IDC_STIC_LUNAR_DATE, m_sticLunarDate);
DDX_Control(pDX, IDC_STIC_MONTH_DAY, m_sticMonthDay);
DDX_Control(pDX, IDC_STIC_DAY_WEEK, m_sticDayWeek);
DDX_Control(pDX, IDC_STIC_TIME, m_sticTime);
DDX_Control(pDX, IDC_BTN_FIRST_TIME_ZONE, m_btnFirstTimeZone);
//}}AFX_DATA_MAP
}
BOOL CTimeManagerView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CTimeManagerView diagnostics
#ifdef _DEBUG
void CTimeManagerView::AssertValid() const
{
CFormView::AssertValid();
}
void CTimeManagerView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CTimeManagerDoc* CTimeManagerView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTimeManagerDoc)));
return (CTimeManagerDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CTimeManagerView message handlers
/**
*************************************************************
* 函 数 名: OnInitialUpdate()
* 描 述: 类初始化,完成初始化工作
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日 期: 2007/05/22
* 修改记录:
* 修改人 修改日期 修改描述
*************************************************************
*/
void CTimeManagerView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
//从配置文件中获取第一时区与第二时区名
CRWini RWini;
RWini.OpenIniFile(STR_TIMEMANAGER_CONFIG_FILE_PATH);
m_strSelSecondTimeZoneName = RWini.GetProfileString("TimeManager","SecondTimeZoneName",m_strSelSecondTimeZoneName);
m_strSelThirdTimeZoneName = RWini.GetProfileString("TimeManager","ThirdTimeZoneName",m_strSelThirdTimeZoneName);
if (0 == m_strSelSecondTimeZoneName.GetLength() || 0 == m_strSelThirdTimeZoneName.GetLength())
{
//如果打开配置失败,则默认设置为:
CString strSecondZone,strThirdZone;
strSecondZone.LoadString(IDS_STR_WORLD_ZONE3);
strThirdZone.LoadString(IDS_STR_WORLD_ZONE18);
m_strSelSecondTimeZoneName = strSecondZone;
m_strSelThirdTimeZoneName = strThirdZone;
//提示用户,重新设置时区
CString strMsgInfo;
strMsgInfo.LoadString(IDS_STR_GET_CONFIGFILE_NOSECC);
MessageBox(strMsgInfo);
//并将默认值写入配置文件中
//CRWini RWini;
RWini.OpenIniFile(STR_TIMEMANAGER_CONFIG_FILE_PATH);
RWini.WriteProfileString("TimeManager","SecondTimeZoneName",m_strSelSecondTimeZoneName);
RWini.WriteProfileString("TimeManager","ThirdTimeZoneName",m_strSelThirdTimeZoneName);
}
//将时区名显示在界面上
CString strWorldZoneName(m_strSelSecondTimeZoneName);
if(strWorldZoneName.GetLength() > 18)
{
strWorldZoneName = strWorldZoneName.Mid(0,17) + _T("...");
}
m_btnSecond.SetWindowText(strWorldZoneName);
strWorldZoneName = m_strSelThirdTimeZoneName;
if(strWorldZoneName.GetLength() > 18)
{
strWorldZoneName = strWorldZoneName.Mid(0,17) + _T("...");
}
m_btnThird.SetWindowText(strWorldZoneName);
//窗体最大化
//ShowWindow(SW_SHOWMAXIMIZED);
//创建系统时钟
CRect rClient;
rClient.left=0;
rClient.top = 0;
rClient.right = 80;
rClient.bottom = 80;
m_ctrlFirstClock.Create(_T(""), WS_CHILD | WS_VISIBLE, rClient, this);
TIME_ZONE_INFORMATION SysTime;
GetSystemTime(&SysTime.DaylightDate);
m_ctrlFirstClock.SetTime(SysTime.DaylightDate.wHour % 12 , SysTime.DaylightDate.wMinute, SysTime.DaylightDate.wSecond);
//显示系统时区
CString strShowZoneName(GetTimeZoneName());
//显示系统时区名
if (strShowZoneName.GetLength() >21)
{
strShowZoneName = strShowZoneName.Mid(0,20) + _T("...");
}
m_btnFirstTimeZone.SetWindowText(strShowZoneName);
//创建第二时区时钟
rClient.left=170;
rClient.top = 120;
rClient.right = 230;
rClient.bottom = 180;
m_ctrlSecondClock.Create(_T(""), WS_CHILD | WS_VISIBLE, rClient, this);
//该时钟不显示秒钟
m_ctrlSecondClock.SetShowSeconds(FALSE);
//创建第二时区时钟
rClient.left=170;
rClient.top = 200;
rClient.right = 230;
rClient.bottom = 260;
m_ctrlThirdClock.Create(_T(""), WS_CHILD | WS_VISIBLE, rClient, this);
//该时钟不显示秒钟
m_ctrlThirdClock.SetShowSeconds(FALSE);
//标志要更新时间界面
//将CString存储在strWeek数组中
//CString strWeekMon,strWeekTues, strWeekWed, strWeekThurs,strWeekFir,strWeekSat,strWeekSun;
//strWeekMon.LoadString(IDS_STR_WEEK_MON);
CString strTmp;
//根据詹华提出的意见修改
m_strWeek[1].LoadString(IDS_STR_WEEK_MON);
m_strWeek[2].LoadString(IDS_STR_WEEK_TUES);
m_strWeek[3].LoadString(IDS_STR_WEEK_WED);
m_strWeek[4].LoadString(IDS_STR_WEEK_THURS);
m_strWeek[5].LoadString(IDS_STR_WEEK_FIR);
m_strWeek[6].LoadString(IDS_STR_WEEK_SAT);
m_strWeek[0].LoadString(IDS_STR_WEEK_SUN);
m_bUpdateMMTimeUI = TRUE;
m_bUpdateDayTimeUI = TRUE;
//SetUIFont();
SetTimeUpdateUI();
//设置定时器
SetTimer(1, 1000, NULL);
//为了使框架与时间管理上显示的时间一致,故发消息通知框架读取系统时间
QM_Message *Send_QM_Message = (QM_Message *)malloc(sizeof(QM_Message));
if (NULL != Send_QM_Message)
{
Send_QM_Message->DestinationPID = QUICKMOBILE_PID;
Send_QM_Message->SourcePID = TIMEMANAGER_PID;
Send_QM_Message->TransferToPID = 0;
Send_QM_Message->MessageID = WM_QM_ADJUST_TIME;
Send_QM_Message->ContentLen = 0;
Send_QM_Message->OriginPID = TIMEMANAGER_PID;
CommonInterface CommInterface;
CommInterface.QM_SendMessage(Send_QM_Message);
free(Send_QM_Message);
}
::SetWindowPos(m_hWnd,HWND_TOP,0,STATUS_HEIGHT,SCREEN_WIDTH,SCREEN_HEIGHT - STATUS_HEIGHT,SWP_SHOWWINDOW);
ModifyStyleEx(0, WS_EX_NODRAG);
}
/**
*************************************************************
* 函 数 名: OnLButtonDown(UINT nFlags, CPoint point)
* 描 述: 鼠标点击事件
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 鼠标点击的X、Y值
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日 期: 2007/05/22
* 修改记录:
* 修改人 修改日期 修改描述
*************************************************************
*/
void CTimeManagerView::OnLButtonDown(UINT nFlags, CPoint point)
{
//用户点击日期时触发
if ((point.x>96)&&(point.x<156)&&(point.y>43 && point.y<52))
{
//弹出修改年、月、日界面
CCalendarPage calendar;
calendar.DoModal();
Invalidate(TRUE);
m_bUpdateDayTimeUI = TRUE;
}
//用户点击系统时钟时触发
if ((point.x>0)&&(point.x<70)&&(point.y>0 && point.y<70))
{
//弹出修改系统时间界面
// m_ctrlFirstClock.SetTimerUpdate(FALSE);
CUpdateTime ha;
ha.DoModal();
//Invalidate(TRUE);
m_ctrlFirstClock.Invalidate(FALSE);
m_bUpdateMMTimeUI = TRUE;
m_bUpdateDayTimeUI = TRUE;
}
CFormView::OnLButtonDown(nFlags, point);
}
/**
*************************************************************
* 函 数 名: OnTimer(UINT nIDEvent)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -