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

📄 datedlg.cpp

📁 串口调试助手的源代码
💻 CPP
字号:
// Written by JHCC, 1997

// DateDlg.cpp : implementation file
//

#include "stdafx.h"
#include "JHHB.h"
#include "DateDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

CString	CDateDlg::m_aStrMonthName[] =
{
	_T("一月"),
	_T("二月"),
	_T("三月"),
	_T("四月"),
	_T("五月"),
	_T("六月"),
	_T("七月"),
	_T("八月"),
	_T("九月"),
	_T("十月"),
	_T("十一月"),
	_T("十二月"),
};

/////////////////////////////////////////////////////////////////////////////
// CDateDlg dialog

CDateDlg::CDateDlg(CTime*  pTime /*=NULL*/, CWnd* pParent /*=NULL*/)
	: CDialog(CDateDlg::IDD, pParent)
{
	if (pTime == NULL)
	{
		COleDateTime	time = COleDateTime::GetCurrentTime();
		m_time.SetDate(time.GetYear(), time.GetMonth(), time.GetDay());	// clear time
	}
	else
		m_time.SetDate(pTime->GetYear(), pTime->GetMonth(), pTime->GetDay());

	//{{AFX_DATA_INIT(CDateDlg)
	//}}AFX_DATA_INIT
}

void	CDateDlg::ShowDate(void)
{
	CString	strDate;
	strDate.Format(_T("%d年%d月"), m_time.GetYear(), m_time.GetMonth());

	m_showDateWnd.SetWindowText(strDate);
	m_dateGridWnd.RedrawWindow();
}

COleDateTime	CDateDlg::GetDate()
{
	return  m_time;
}

void CDateDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDateDlg)
	DDX_Control(pDX, IDC_SHOWOTHERMONTHDAY, m_showOtherMonthDayButton);
	DDX_Control(pDX, IDC_SHOWDATE, m_showDateWnd);
	DDX_Control(pDX, IDC_YEAR, m_yearBox);
	DDX_Control(pDX, IDC_MONTH, m_monthBox);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CDateDlg, CDialog)
	//{{AFX_MSG_MAP(CDateDlg)
	ON_CBN_SELENDOK(IDC_MONTH, OnSeleMonth)
	ON_CBN_SELENDOK(IDC_YEAR, OnSeleYear)
	ON_BN_CLICKED(IDC_SHOWOTHERMONTHDAY, OnShowOtherMonthDay)
	ON_BN_CLICKED(IDC_DATEGRID, OnDategrid)
	//}}AFX_MSG_MAP

	ON_MESSAGE(WMDATE_CHANGEDATE, OnChangeDate)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDateDlg message handlers

void CDateDlg::OnSeleMonth()
{
	m_dateGridWnd.AdjustDate(m_monthBox.GetCurSel() + 1, FALSE, CDayGridWnd::ADJUST_MONTH_ABS);

	m_dateGridWnd.CalcFirstDayOfMonth();
	ShowDate();
}

void CDateDlg::OnSeleYear()
{
	m_dateGridWnd.AdjustDate(m_yearBox.GetCurSel() + YEAR_START, FALSE, CDayGridWnd::ADJUST_YEAR_ABS);

	m_dateGridWnd.CalcFirstDayOfMonth();
	ShowDate();
}

BOOL CDateDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	m_yearBox.ResetContent();
	for (int  i = YEAR_START; i < YEAR_END; ++ i)
	{
		CString	strYear;
		strYear.Format("%d", i);
		m_yearBox.AddString(strYear);
	}
	m_yearBox.SetCurSel(m_time.GetYear() - YEAR_START);

	m_monthBox.ResetContent();
	for (i = 0; i < sizeof(m_aStrMonthName) / sizeof(m_aStrMonthName[0]); ++ i)
	{
		m_monthBox.AddString(m_aStrMonthName[i]);
	}
	m_monthBox.SetCurSel(m_time.GetMonth() - 1);
	
	CRect	rtBounds;
	m_showDateWnd.GetClientRect(&rtBounds);

	LOGFONT	logFont;
	::memset(&logFont, 0, sizeof(logFont));
	logFont.lfHeight = rtBounds.Height();
	logFont.lfWidth = rtBounds.Width() / 10;
	logFont.lfCharSet = OEM_CHARSET;
	logFont.lfWeight = 600;
	logFont.lfItalic = TRUE;
	CString	szFont = "楷体_GB2312";
	::lstrcpy(logFont.lfFaceName, szFont);
	VERIFY(m_font.CreateFontIndirect(&logFont));

	m_showDateWnd.SetFont(&m_font);
	
	GetDlgItem(IDC_DATEGRID)->GetWindowRect(&rtBounds);
	GetDlgItem(IDC_DATEGRID)->DestroyWindow();
	ScreenToClient(&rtBounds);

	m_dateGridWnd.CreateEx(WS_EX_CLIENTEDGE, NULL, NULL, WS_CHILD | WS_VISIBLE,
		rtBounds.left, rtBounds.top, 
		rtBounds.Width(), rtBounds.Height(), 
		this->GetSafeHwnd(), (HMENU)IDC_DATEGRID);
	m_dateGridWnd.InitDayGrid(&m_time);

	ShowDate();
	m_dateGridWnd.SetFocus();
	return  FALSE;	// return TRUE unless you set the focus to a control
				// EXCEPTION: OCX Property Pages should return FALSE
}

LRESULT	CDateDlg::OnChangeDate(WPARAM  wParam, LPARAM  lParam)
{
	switch (wParam)
	{
	case CM_CHANGEYEAR:
		m_yearBox.SetCurSel(lParam - YEAR_START);

		m_dateGridWnd.CalcFirstDayOfMonth();
		ShowDate();
		break;

	case CM_CHANGEMONTH:
		m_monthBox.SetCurSel(lParam - 1);

		m_dateGridWnd.CalcFirstDayOfMonth();
		ShowDate();
		break;
	}

	return  (LRESULT)0;
}

void CDateDlg::OnShowOtherMonthDay() 
{
	m_dateGridWnd.SetShowOtherMonthDay(m_showOtherMonthDayButton.GetCheck());
	m_dateGridWnd.RedrawWindow();
}

void CDateDlg::OnDategrid() 
{
	// TODO: Add your control notification handler code here
	
}

void CDateDlg::OnOK() 
{
	// TODO: Add extra validation here
	
	CDialog::OnOK();
}

void CDateDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	CDialog::OnCancel();
}

⌨️ 快捷键说明

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