📄 timemanagerview.cpp
字号:
/**
***************************************************************
* 文件名: TimeManagerView<br>
* 版 权: Copyright (c) 2006-2020 中兴软件技术(南昌)有限公司<br>
* 创建人: 袁军
* 日 期: 2007/05/28
* 描 述: 该类是时间管理的主框架类,将实现对时间管理主框架的管理以及界面的正确的显示。
* 修改人:
* 日 期:
* 修改描述:
* 版 本: 0.1
***************************************************************
*/
#include "stdafx.h"
#include "TimeManager.h"
#include "TimeManagerDoc.h"
#include "TimeManagerView.h"
#include "ClockCtrl.h"
#include "UpdateTime.h"
#include "CalendarPage.h"
#include "UpdateTimeZone.h"
#include "OtherTimeZone.h"
#include "Afx.h"
#include "RWini.h"
#include "CommonInterface.h"
#include "Define.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTimeManagerView
IMPLEMENT_DYNCREATE(CTimeManagerView, CFormView)
BEGIN_MESSAGE_MAP(CTimeManagerView, CFormView)
//{{AFX_MSG_MAP(CTimeManagerView)
ON_WM_LBUTTONDOWN()
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BTN_FIRST_TIME_ZONE, OnBtnFirstTimeZone)
ON_BN_CLICKED(IDC_BTN_SECOND, OnBtnSecond)
ON_BN_CLICKED(IDC_BTN_THIRD, OnBtnThird)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTimeManagerView construction/destruction
CTimeManagerView::CTimeManagerView()
: CFormView(CTimeManagerView::IDD)
{
//{{AFX_DATA_INIT(CTimeManagerView)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// TODO: add construction code here
}
/**
*************************************************************
* 函 数 名: ~CTimeManagerView()
* 描 述: 析构函数,用于该类的清尾工作
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日 期: 2007/05/22
* 修改记录:
* 修改人 修改日期 修改描述
*************************************************************
*/
CTimeManagerView::~CTimeManagerView()
{
}
/**
*************************************************************
* 函 数 名: SetUpdateTime(int nHour, int nMinute, int nSecond)
* 描 述: 设置系统表的时间
* 数 据 库: 无
* 数据库表: 无
* 输入参数: nHour:小时, nMinute:分,nSecond:秒
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日 期: 2007/05/22
* 修改记录:
* 修改人 修改日期 修改描述
*************************************************************
*/
void CTimeManagerView::SetUpdateTime(int nHour, int nMinute, int nSecond)
{
//设置系统表的时间
m_ctrlFirstClock.SetTime(nHour, nMinute, nSecond);
}
/**
*************************************************************
* 函 数 名: GetTimeZoneName()
* 描 述: 获取系统时区名
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 返回系统时区的时区名
* 创 建 人: 袁军
* 日 期: 2007/05/22
* 修改记录:
* 修改人 修改日期 修改描述
*************************************************************
*/
CString CTimeManagerView::GetTimeZoneName()
{
TIME_ZONE_INFORMATION tziOld;
DWORD dwRet;
dwRet = GetTimeZoneInformation(&tziOld);
//获取标准时间成功
if(TIME_ZONE_ID_STANDARD == dwRet || TIME_ZONE_ID_UNKNOWN == dwRet)
{
//返回标志时区名,并将它赋值给m_strSysTimeZone,便于以后利用
m_strSysTimeZone = tziOld.DaylightName;
m_lBias = tziOld.StandardBias;
return m_strSysTimeZone;
}
else if(TIME_ZONE_ID_DAYLIGHT == dwRet)
{
return tziOld.DaylightName;
}
else
{
CString strMsgInfo;
strMsgInfo.LoadString(IDS_STR_GET_SYSZONE_NOSECC);
MessageBox(strMsgInfo);
}
return "";
}
/**
*****************GetSysBias()********************************************
* 函 数 名: GetSysBias()
* 描 述: 获取世界时区与系统时区的时差
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日 期: 2007/12/13
* 修改记录:
* 修改人 修改日期 修改描述
*************************************************************
*/
LONG CTimeManagerView::GetSysBias()
{
TIME_ZONE_INFORMATION tziOld;
DWORD dwRet;
dwRet = GetTimeZoneInformation(&tziOld);
//获取标准时间成功
if(TIME_ZONE_ID_STANDARD == dwRet || TIME_ZONE_ID_UNKNOWN == dwRet)
{
//返回标志时区名,并将它赋值给m_strSysTimeZone,便于以后利用
m_lBias = -tziOld.Bias;
return m_lBias;
}
else
{
CString strMsgInfo;
strMsgInfo.LoadString(IDS_STR_GET_SYSZONE_NOSECC);
MessageBox(strMsgInfo);
}
return 0;
}
/**
*************************************************************
* 函 数 名: SetUIFont()
* 描 述: 设置数字时间的字体大小
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日 期: 2007/05/22
* 修改记录:
* 修改人 修改日期 修改描述
*************************************************************
*/
void CTimeManagerView::SetUIFont(int WorldTimeZone)
{
switch(WorldTimeZone)
{
case -1:
{
//设置系统时区字体大小
CFont m_FirstFont;
CStatic* Firspctr = &m_sticTime;
m_FirstFont.CreateFont(32,0,0,0,8,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_SWISS,_T("@system"));
Firspctr->SetFont(&m_FirstFont);
//设置第二时区字体大小
CFont m_SecondFont;
CStatic* Secondpctr = &m_sticSecondTime;
m_SecondFont.CreateFont(28,0,0,0,8,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_SWISS,_T("@system"));
Secondpctr->SetFont(&m_SecondFont);
//设置的第三时区大小
CFont m_ThirdFont;
CStatic* Thirdpctr = &m_sticThirdTime;
m_ThirdFont.CreateFont(28,0,0,0,8,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_SWISS,_T("@system"));
Thirdpctr->SetFont(&m_ThirdFont);
break;
}
case 0 :
{
//设置系统时区字体大小
CFont m_FirstFont;
CStatic* Firspctr = &m_sticTime;
m_FirstFont.CreateFont(32,0,0,0,8,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_SWISS,_T("@system"));
Firspctr->SetFont(&m_FirstFont);
break;
}
case 1:
{
//设置第二时区字体大小
CFont m_SecondFont;
CStatic* Secondpctr = &m_sticSecondTime;
m_SecondFont.CreateFont(28,0,0,0,8,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_SWISS,_T("@system"));
Secondpctr->SetFont(&m_SecondFont);
break;
}
case 2:
{
//设置的第三时区大小
CFont m_ThirdFont;
CStatic* Thirdpctr = &m_sticThirdTime;
m_ThirdFont.CreateFont(28,0,0,0,8,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_SWISS,_T("@system"));
Thirdpctr->SetFont(&m_ThirdFont);
break;
}
}
}
/**
*************************************************************
* 函 数 名: SetTimeUpdateUI()
* 描 述: 根据时间的改变定时更新界面信息
* 数 据 库: 无
* 数据库表: 无
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 创 建 人: 袁军
* 日 期: 2007/05/22
* 修改记录: 修改了更新世界时区与天有关的信息
* 修改人: 袁军 修改日期: 2007/08/22 修改描述: 将过
去判断更新星期日期与星期天的条件做了修改
*************************************************************
*/
void CTimeManagerView::SetTimeUpdateUI()
{
SYSTEMTIME SysTime;
//获取系统时间信息,包括:年、月、日、星期、分、秒
GetSystemTime(&SysTime);
m_iYear = SysTime.wYear;
m_iMonth = SysTime.wMonth;
m_iDayOfWeek = SysTime.wDayOfWeek;
m_iDay = SysTime.wDay;
m_iHour = SysTime.wHour;
int iMintue = SysTime.wMinute;
int iSecond = SysTime.wSecond;
// GetTimeZoneName();
////////////////与秒有关的内容/////////////////////////////////
/* 将系统时间显示在界面上 */
m_strHour.Format(_T("%02d"), m_iHour);
m_strMintue.Format(_T("%02d"),iMintue);
m_strSecond.Format(_T("%02d"),iSecond);
//组合系统时间(小时、分、秒)
CString strSysTime = m_strHour + ":" + m_strMintue + ":" + m_strSecond;
m_sticTime.SetWindowText(strSysTime);
SetUIFont(0);
///////////////////////////////////////////////////////////////
/*
CString strShowZoneName(GetTimeZoneName());
//显示系统时区名
if (strShowZoneName.GetLength() >21)
{
strShowZoneName = strShowZoneName.Mid(0,20) + _T("...");
}
m_btnFirstTimeZone.SetWindowText(strShowZoneName);
*/
////////////////////与分有关的内容/////////////////////////////
/*将世界时区的时间显示在界面上(不包括分钟)*/
if (0 == iSecond || m_bUpdateMMTimeUI)
{
//第二时区的时间
GetWorldTimeZoneInfo(m_strSelSecondTimeZoneName,m_iSecondYear, m_iSecondMonth,m_iSecondWeek, m_iSecondDay, m_iSecondHour, m_iSecondMinute, m_iSecondHourDiff, m_iSecondMintueDiff, m_ctrlSecondClock);
//第三时区的时间
GetWorldTimeZoneInfo(m_strSelThirdTimeZoneName,m_iThirdYear, m_iThirdMonth,m_iThirdWeek, m_iThirdDay, m_iThirdHour, m_iThirdMinute, m_iThirdHourDiff, m_iThirdMinuteDiff, m_ctrlThirdClock);
//显示第二时区时间
CString strSecondHour, strSecondMintue;
strSecondHour.Format(_T ("%02d"), m_iSecondHour%24);
strSecondMintue.Format(_T("%02d"),m_iSecondMinute);
CString strSecondTime = strSecondHour + ":" + strSecondMintue;
m_sticSecondTime.SetWindowText(strSecondTime);
SetUIFont(1);
CString strThirdHour,strThirdMinute;
strThirdHour.Format(_T ("%02d"), m_iThirdHour%24);
strThirdMinute.Format(_T ("%02d"), m_iThirdMinute);
//显示第三时区时间
CString strThirdTime = strThirdHour + ":" + strThirdMinute;
m_sticThirdTime.SetWindowText(strThirdTime);
m_bUpdateMMTimeUI = FALSE;
SetUIFont(2);
}
///////////////////////////////////////////////////////////////
//////////////////////与日有关的内容///////////////////////////
if (((0 == iSecond) && (0 == iMintue) && (0 == m_iHour))|| m_bUpdateDayTimeUI)
{
//第二时区的时间
GetWorldTimeZoneInfo(m_strSelSecondTimeZoneName,m_iSecondYear, m_iSecondMonth,m_iSecondWeek, m_iSecondDay,m_iSecondHour, m_iSecondMinute, m_iSecondHourDiff, m_iSecondMintueDiff, m_ctrlSecondClock);
//第三时区的时间
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -