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

📄 timemanagerview.cpp

📁 该时间管理是模仿酷派628手机上的时间管理书写其功能
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		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 + -