328 lines
7.5 KiB
C++
Executable File
328 lines
7.5 KiB
C++
Executable File
// SetDateDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "gpsmain.h"
|
|
#include "SetDateDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSetDateDlg dialog
|
|
|
|
|
|
CSetDateDlg::CSetDateDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CSetDateDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CSetDateDlg)
|
|
//}}AFX_DATA_INIT
|
|
|
|
// 初始化背景画刷
|
|
CBitmap tmpBmp;
|
|
// 从资源中加载背景图片
|
|
tmpBmp.LoadBitmap(IDB_DATESET_WND);
|
|
|
|
// 建立背景画刷
|
|
m_BgDC.CreateCompatibleDC(NULL);
|
|
m_BgDC.SelectObject(&tmpBmp);
|
|
|
|
tmpBmp.DeleteObject();
|
|
|
|
// 18x18 粗体
|
|
m_titleFont.CreateFont(18,0,0,0,FW_BOLD,0,0,0,GB2312_CHARSET,OUT_DEFAULT_PRECIS,
|
|
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,_T("Arial"));
|
|
|
|
m_txtFont.CreateFont(18,0,0,0,FW_BOLD,0,0,0,GB2312_CHARSET,OUT_DEFAULT_PRECIS,
|
|
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,_T("Arial"));
|
|
|
|
// 绘制日期日期
|
|
SYSTEMTIME dt;
|
|
// 获取本地日期和时间
|
|
GetLocalTime(&dt);
|
|
|
|
m_Year = dt.wYear;
|
|
m_Month = dt.wMonth;
|
|
m_Day = dt.wDay;
|
|
|
|
}
|
|
|
|
CSetDateDlg::~CSetDateDlg()
|
|
{
|
|
m_BgDC.DeleteDC();
|
|
m_txtFont.DeleteObject();
|
|
m_titleFont.DeleteObject();
|
|
}
|
|
|
|
void CSetDateDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CSetDateDlg)
|
|
DDX_Control(pDX, IDC_BUTTON_SETDATE_YEARDEC, m_butDecYear);
|
|
DDX_Control(pDX, IDC_BUTTON_SETDATE_MONTHDEC, m_butDecMonth);
|
|
DDX_Control(pDX, IDC_BUTTON_SETDATE_DAYDEC, m_butDecDay);
|
|
DDX_Control(pDX, IDC_BUTTON_SETDATE_MONTHADD, m_butAddMonth);
|
|
DDX_Control(pDX, IDC_BUTTON_SETDATE_DAYADD, m_butAddDay);
|
|
DDX_Control(pDX, IDC_BUTTON_SETDATE_ADDYEAR, m_butAddYear);
|
|
DDX_Control(pDX, IDC_BUTTON_SETDATEEXIT, m_butExit);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CSetDateDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CSetDateDlg)
|
|
ON_WM_ERASEBKGND()
|
|
ON_WM_PAINT()
|
|
ON_BN_CLICKED(IDC_BUTTON_SETDATE_ADDYEAR, OnButtonSetdateAddyear)
|
|
ON_BN_CLICKED(IDC_BUTTON_SETDATE_DAYADD, OnButtonSetdateDayadd)
|
|
ON_BN_CLICKED(IDC_BUTTON_SETDATE_DAYDEC, OnButtonSetdateDaydec)
|
|
ON_BN_CLICKED(IDC_BUTTON_SETDATE_MONTHADD, OnButtonSetdateMonthadd)
|
|
ON_BN_CLICKED(IDC_BUTTON_SETDATE_MONTHDEC, OnButtonSetdateMonthdec)
|
|
ON_BN_CLICKED(IDC_BUTTON_SETDATE_YEARDEC, OnButtonSetdateYeardec)
|
|
ON_BN_CLICKED(IDC_BUTTON_SETDATEEXIT, OnButtonSetdateexit)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSetDateDlg message handlers
|
|
|
|
BOOL CSetDateDlg::OnEraseBkgnd(CDC* pDC)
|
|
{
|
|
// TODO: Add your message handler code here and/or call default
|
|
return FALSE;
|
|
//return CDialog::OnEraseBkgnd(pDC);
|
|
}
|
|
|
|
void CSetDateDlg::OnPaint()
|
|
{
|
|
CPaintDC dc(this); // device context for painting
|
|
|
|
// TODO: Add your message handler code here
|
|
|
|
// TODO: Add your message handler code here
|
|
dc.BitBlt(0,0,320,240,&m_BgDC,0,0,SRCCOPY);
|
|
|
|
dc.SelectObject(&m_titleFont);
|
|
dc.SetBkMode(TRANSPARENT);
|
|
dc.SetTextColor(RGB(255,255,255));
|
|
|
|
WCHAR strRes[MAX_PATH];
|
|
CString(LoadString(theApp.GetResourceLib(),IDS_SETDATE_TITLE,strRes,MAX_PATH));
|
|
dc.DrawText(strRes,CRect(0,4,320,32),DT_CENTER|DT_VCENTER);
|
|
|
|
dc.SelectObject(&m_txtFont);
|
|
dc.SetTextColor(RGB(0,0,0));
|
|
CString(LoadString(theApp.GetResourceLib(),IDS_SETDATE_YEAR,strRes,MAX_PATH));
|
|
dc.DrawText(strRes,CRect(0,52,320,70),DT_VCENTER|DT_CENTER);
|
|
|
|
CString(LoadString(theApp.GetResourceLib(),IDS_SETDATE_MONTH,strRes,MAX_PATH));
|
|
dc.DrawText(strRes,CRect(0,104,320,121),DT_VCENTER|DT_CENTER);
|
|
|
|
CString(LoadString(theApp.GetResourceLib(),IDS_SETDATE_DAY,strRes,MAX_PATH));
|
|
dc.DrawText(strRes,CRect(0,154,320,172),DT_VCENTER|DT_CENTER);
|
|
|
|
dc.SetTextColor(RGB(255,255,255));
|
|
|
|
CString str;
|
|
|
|
str.Format(L"%d",m_Year);
|
|
dc.DrawText(str,CRect(71,73,248,102),DT_VCENTER|DT_CENTER);
|
|
|
|
str.Format(L"%d",m_Month);
|
|
dc.DrawText(str,CRect(71,123,248,151),DT_VCENTER|DT_CENTER);
|
|
|
|
str.Format(L"%d",m_Day);
|
|
dc.DrawText(str,CRect(71,174,248,203),DT_VCENTER|DT_CENTER);
|
|
|
|
// Do not call CDialog::OnPaint() for painting messages
|
|
}
|
|
|
|
BOOL CSetDateDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
CenterWindow(this); // center to the hpc screen
|
|
|
|
// TODO: Add extra initialization here
|
|
// 设置窗口大小
|
|
MoveWindow(0,0,320,240);
|
|
|
|
m_butExit.MoveWindow(282,6,25,25);
|
|
m_butExit.LoadBitmaps(IDB_SETVOLUME_CLOSE,IDB_SETVOLUME_CLOSED);
|
|
|
|
m_butDecYear.MoveWindow(22,64,48,48);
|
|
m_butDecYear.LoadBitmaps(IDB_DATESET_YEARDEC,IDB_DATESET_YEARDECD);
|
|
|
|
m_butDecMonth.MoveWindow(22,114,48,48);
|
|
m_butDecMonth.LoadBitmaps(IDB_DATESET_MONTHDEC,IDB_DATESET_MONTHDECD);
|
|
|
|
m_butDecDay.MoveWindow(22,166,48,48);
|
|
m_butDecDay.LoadBitmaps(IDB_DATESET_DAYDEC,IDB_DATESET_DAYDECD);
|
|
|
|
m_butAddYear.MoveWindow(250,64,48,48);
|
|
m_butAddYear.LoadBitmaps(IDB_DATESET_YEARADD,IDB_DATESET_YEARADDD);
|
|
|
|
m_butAddMonth.MoveWindow(250,114,48,48);
|
|
m_butAddMonth.LoadBitmaps(IDB_DATESET_MONTHADD,IDB_DATESET_MONTHADDD);
|
|
|
|
m_butAddDay.MoveWindow(250,166,48,48);
|
|
m_butAddDay.LoadBitmaps(IDB_DATESET_DAYADD,IDB_DATESET_DAYADDD);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CSetDateDlg::OnButtonSetdateAddyear()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
if (m_Year < 2099)
|
|
{
|
|
m_Year++;
|
|
}
|
|
else
|
|
{
|
|
m_Year = 2000;
|
|
}
|
|
|
|
InvalidateRect(CRect(71,73,248,102));
|
|
}
|
|
|
|
void CSetDateDlg::OnButtonSetdateDayadd()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
if (m_Day < GetDays(m_Year,m_Month))
|
|
{
|
|
m_Day++;
|
|
}
|
|
else
|
|
{
|
|
m_Day = 1;
|
|
}
|
|
|
|
InvalidateRect(CRect(71,174,248,203));
|
|
}
|
|
|
|
void CSetDateDlg::OnButtonSetdateDaydec()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
if (m_Day > 1)
|
|
{
|
|
m_Day--;
|
|
}
|
|
else
|
|
{
|
|
m_Day = GetDays(m_Year,m_Month);
|
|
}
|
|
InvalidateRect(CRect(71,174,248,203));
|
|
}
|
|
|
|
void CSetDateDlg::OnButtonSetdateMonthadd()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
if (m_Month < 12)
|
|
{
|
|
m_Month++;
|
|
}
|
|
else
|
|
{
|
|
m_Month = 1;
|
|
}
|
|
|
|
InvalidateRect(CRect(71,123,248,151));
|
|
}
|
|
|
|
void CSetDateDlg::OnButtonSetdateMonthdec()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
if(m_Month > 1)
|
|
{
|
|
m_Month--;
|
|
}
|
|
else
|
|
{
|
|
m_Month = 12;
|
|
}
|
|
|
|
InvalidateRect(CRect(71,123,248,151));
|
|
}
|
|
|
|
void CSetDateDlg::OnButtonSetdateYeardec()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
if (m_Year > 2000)
|
|
{
|
|
m_Year--;
|
|
}
|
|
else
|
|
{
|
|
m_Year = 2099;
|
|
}
|
|
|
|
InvalidateRect(CRect(71,73,248,102));
|
|
}
|
|
|
|
void CSetDateDlg::OnButtonSetdateexit()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
SYSTEMTIME dt;
|
|
GetLocalTime(&dt);
|
|
|
|
dt.wDay = m_Day;
|
|
dt.wMonth = m_Month;
|
|
dt.wYear = m_Year;
|
|
|
|
SetLocalTime(&dt);
|
|
|
|
EndDialog(IDOK);
|
|
}
|
|
|
|
int CSetDateDlg::GetDays(int iYear, int iMonth)
|
|
{
|
|
if (iMonth == 1 || iMonth == 3 || iMonth == 5 || iMonth ==7
|
|
|| iMonth == 8 || iMonth == 10 || iMonth == 12)
|
|
{
|
|
// 大月31天
|
|
return 31;
|
|
}
|
|
else
|
|
{
|
|
// 是否是二月
|
|
if (iMonth == 2)
|
|
{
|
|
// 闰年2月29天
|
|
if (IsLoopYear(iYear))
|
|
{
|
|
return 29;
|
|
}
|
|
else
|
|
{
|
|
// 不是闰年2月28天
|
|
return 28;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// 小月30天
|
|
return 30;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool CSetDateDlg::IsLoopYear(int iYear)
|
|
{
|
|
if ((iYear % 4) == 0
|
|
&& (iYear % 100) != 0
|
|
|| (iYear % 400 == 0))
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|