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

📄 set_xxxdlg.cpp

📁 wince下非常精美的系统时间设置
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	GetTimeStr(m_CurTime,m_TargetDate,&m_TimeStr,m_b12hour);
	
	DrawAreaItem(&dc,mask);
}

void CSet_xxxDlg::DrawAreaItem(CDC* pDC,UINT mask)
{
	PBTN_ITEM pTemp = m_TimeAreas;
	UINT bit;

	pDC->SetTextColor(RGB(255,255,255));
	pDC->SelectObject(&m_fArea);   
	pDC->SetBkMode(TRANSPARENT);

	for(UINT i=0;i<AREA_TAL_NUM;i++)
	{
		bit = 0x01<<(pTemp->iIndex-1);
		if(mask&bit)
		{
			DrawJpg(pDC,(UINT)m_AreaSel==pTemp->iIndex?pTemp->iImage2:pTemp->iImage1,pTemp->pRect);
			DrawTimeText(pDC, (AREA_SEL)pTemp->iIndex, (PRECT)pTemp->pRect);
		}
		
		pTemp++;
	}
	
	return;
}

void CSet_xxxDlg::DrawTimeAreas(CDC* pDC)
{
	PBTN_ITEM pTemp = m_TimeAreas;

	pDC->SetTextColor(RGB(255,255,255));
	pDC->SelectObject(&m_fArea);   
	pDC->SetBkMode(TRANSPARENT);

	for(UINT i=0;i<AREA_TAL_NUM;i++)
	{
		DrawJpg(pDC,(UINT)m_AreaSel==pTemp->iIndex?pTemp->iImage2:pTemp->iImage1,pTemp->pRect);
		DrawTimeText(pDC, (AREA_SEL)pTemp->iIndex, (PRECT)pTemp->pRect);
		pTemp++;
	}
	
	return;
}

void CSet_xxxDlg::DrawTimeText(CDC* pDC,AREA_SEL sel,PRECT pRect)
{
	switch(sel) {
	case AREA_YEAR:
		DrawText(pDC->GetSafeHdc(), m_TimeStr.year, -1, pRect, DT_SINGLELINE|DT_VCENTER|DT_CENTER );
		break;
	case AREA_MON:
		DrawText(pDC->GetSafeHdc(), m_TimeStr.mon, -1, pRect, DT_SINGLELINE|DT_VCENTER|DT_CENTER );
		break;
	case AREA_DATE:
		DrawText(pDC->GetSafeHdc(), m_TimeStr.date, -1, pRect, DT_SINGLELINE|DT_VCENTER|DT_CENTER );
		break;
	case AREA_HOUR:
		DrawText(pDC->GetSafeHdc(), m_TimeStr.hour, -1, pRect, DT_SINGLELINE|DT_VCENTER|DT_CENTER );
		break;
	case AREA_MIN:
		DrawText(pDC->GetSafeHdc(), m_TimeStr.min, -1, pRect, DT_SINGLELINE|DT_VCENTER|DT_CENTER );
		break;
	case AREA_SEC:
		DrawText(pDC->GetSafeHdc(), m_TimeStr.sec, -1, pRect, DT_SINGLELINE|DT_VCENTER|DT_CENTER );
		break;
	case AREA_ZONE: 
		{
			RECT rect;
			SetRect(&rect,pRect->left+5,pRect->top,pRect->right-5,pRect->bottom);
			DrawText(pDC->GetSafeHdc(), m_TimeStr.zone, -1, &rect, DT_SINGLELINE|DT_VCENTER|DT_LEFT );
		}
		break;
	default:
		break;
	}
}

void CSet_xxxDlg::BtnCommandUp(UINT btn_index) 
{
	switch(btn_index) {
	case BTN1_CLOSE:
		SetDateTime(m_CurTime,m_TargetDate);
		SetTimeZone(&m_ZoneInf);
		OnCancel();
		break;
	case BTN1_TIME_DN:
		SetTimeUp(FALSE);
		break;
	case BTN1_TIME_UP:
		SetTimeUp(TRUE);
		break;
	case BTN1_DATE_DN:
		SetDateUp(FALSE);
		break;
	case BTN1_DATE_UP:
		SetDateUp(TRUE);
		break;
	case BTN1_ZONE_DN:
		SetZoneUp(FALSE);
		break;
	case BTN1_ZONE_UP:
		SetZoneUp(TRUE);
		break;
	default:
		break;
	}
}

void CSet_xxxDlg::BtnCommandDown(UINT btn_index) 
{

	switch(btn_index) {
	case BTN1_12_24:
		{
			m_b12hour = !m_b12hour;
			Set12HourMode(m_b12hour);
			GetTimeStr(m_CurTime,m_TargetDate,&m_TimeStr,m_b12hour);
			InvalidateRect(&rAreaHour);
		}
		break;
	case BTN1_DATE_DN:
	case BTN1_DATE_UP:
	case BTN1_TIME_DN:
	case BTN1_TIME_UP:
	case BTN1_ZONE_DN:
	case BTN1_ZONE_UP:
		SetTimer(TIMER_LONGPUSH_CON,LONG_WAIT_TIME,NULL);
		break;
	case BTN1_DL1_SEL:
	case BTN1_DL2_SEL:
		{
			if(m_ZoneInf.bDl_Mask&BIT_DL_EN)
			{
				if(m_ZoneInf.bDl_Mask&BIT_DL_ON)
					m_ZoneInf.bDl_Mask&=(~BIT_DL_ON);
				else
					m_ZoneInf.bDl_Mask|=BIT_DL_ON;
				InvalidateRect(&rBtnDl1,FALSE);
			}
		}
	default:
		break;
	}
}

void CSet_xxxDlg::BtnLongPushCommand(UINT btn_index) 
{
	switch(btn_index) {
	case BTN1_TIME_DN:
		SetTimeUp(FALSE);
		break;
	case BTN1_TIME_UP:
		SetTimeUp(TRUE);
		break;
	case BTN1_DATE_DN:
		SetDateUp(FALSE);
		break;
	case BTN1_DATE_UP:
		SetDateUp(TRUE);
		break;
	case BTN1_ZONE_DN:
		SetZoneUp(FALSE);
		break;
	case BTN1_ZONE_UP:
		SetZoneUp(TRUE);
		break;
	default:
		break;
	}
}

void CSet_xxxDlg::SetTimeUp(BOOL bUp) 
{
	if(m_AreaSel==AREA_SEC)
	{
		KillTimer(TIMER_FRESH_TIME);
		if(bUp)
		{
			if(m_CurTime.wSecond<59)
				m_CurTime.wSecond++;
			else
				m_CurTime.wSecond=0;
		}
		else
		{
			if(m_CurTime.wSecond>0)
				m_CurTime.wSecond--;
			else
				m_CurTime.wSecond=59;
		}
		FreshTimeArea(BIT_SEC);
		
	}
	else if(m_AreaSel==AREA_MIN)
	{
		KillTimer(TIMER_FRESH_TIME);
		if(bUp)
		{
			if(m_CurTime.wMinute<59)
				m_CurTime.wMinute++;
			else
				m_CurTime.wMinute=0;
		}
		else
		{
			if(m_CurTime.wMinute>0)
				m_CurTime.wMinute--;
			else
				m_CurTime.wMinute=59;
		}
		FreshTimeArea(BIT_MIN);
		
	}
	else if(m_AreaSel==AREA_HOUR)
	{
		KillTimer(TIMER_FRESH_TIME);
		if(bUp)
		{
			if(m_CurTime.wHour<23)
				m_CurTime.wHour++;
			else
				m_CurTime.wHour=0;
		}
		else
		{
			if(m_CurTime.wHour>0)
				m_CurTime.wHour--;
			else
				m_CurTime.wHour=23;
		}
		FreshTimeArea(BIT_HOUR);
		
	}
}

void CSet_xxxDlg::SetDateUp(BOOL bUp) 
{
	UINT mask=0;
	if(m_AreaSel==AREA_YEAR)
	{
		if(bUp)
		{
			if(m_TargetDate.wYear<2050)
				m_TargetDate.wYear++;
		}
		else
		{
			if(m_TargetDate.wYear>1950)
				m_TargetDate.wYear--;
		}
		mask|=BIT_YEAR;
	}
	else if(m_AreaSel==AREA_MON)
	{
		if(bUp)
		{
			if(m_TargetDate.wMonth<12)
				m_TargetDate.wMonth++;
			else
				m_TargetDate.wMonth = 1;
		}
		else
		{
			if(m_TargetDate.wMonth>1)
				m_TargetDate.wMonth--;
			else
				m_TargetDate.wMonth = 12;
		}
		mask|=BIT_MON;
	}
	else if(m_AreaSel==AREA_DATE)
	{
		if(bUp)
		{
			if(m_TargetDate.wDay<31)
				m_TargetDate.wDay++;
			else
				m_TargetDate.wDay = 1;
		}
		else
		{
			if(m_TargetDate.wDay>1)
				m_TargetDate.wDay--;
			else
				m_TargetDate.wDay = 31;
		}
		mask|=BIT_DATE;
	}
	CalcRightTime(m_TargetDate,bUp,mask);
	FreshTimeArea(mask);
}

void CSet_xxxDlg::SetZoneUp(BOOL bUp) 
{
	BOOL bFresh=FALSE;
	UINT FreshMask=BIT_ZONE;
	UINT dl = m_ZoneInf.bDl_Mask;
	if(m_AreaSel==AREA_ZONE)
	{
		if(bUp)
		{
			if(m_ZoneInf.dwCurZon<m_ZoneInf.dwZoneNum-1)
			{
				m_ZoneInf.dwCurZon++;
				bFresh = TRUE;
			}
		}
		else
		{
			if(m_ZoneInf.dwCurZon>0)
			{
				m_ZoneInf.dwCurZon--;
				bFresh = TRUE;
			}
		}

		if(bFresh)
		{
#if KEEP_UTC_TIME
			KillTimer(TIMER_FRESH_TIME);
#endif
			FreshMask|=GetTagetZone(&m_ZoneInf,m_TimeStr.zone,&m_CurTime);

			FreshTimeArea(FreshMask);

			if(dl!=m_ZoneInf.bDl_Mask)
			{
				FreshDlArea();
			}
		}
		
	}
}

void CSet_xxxDlg::FreshDlArea()
{
	CWindowDC dc(this);

	DrawJpg(&dc,(m_ZoneInf.bDl_Mask&BIT_DL_ON)?((m_ZoneInf.bDl_Mask&BIT_DL_EN)?\
			IDR_BTN1_DL1_EN:IDR_BTN1_DL1_DIS):(IDR_BTN1_DL1_OFF),&rBtnDl1);
	DrawJpg(&dc,(m_ZoneInf.bDl_Mask&BIT_DL_EN)?IDR_BTN1_DL2_EN:IDR_BTN1_DL2_DIS,&rBtnDl2);

	return;
}

⌨️ 快捷键说明

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