Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1994-1998 Microsoft Corporation
Module Name :
seldate.cpp
Abstract:
Date selector dialog
Author:
Ronald Meijer (ronaldm)
Project:
Internet Services Manager
Revision History:
--*/
//
// Include Files
//
#include "stdafx.h"
#include "w3scfg.h"
#include "seldate.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
CSelDate::CSelDate( IN CTime tm, IN CWnd * pParent OPTIONAL ) /*++
Routine Description:
Date selector dialog constructor
Arguments:
CTime tm, CWnd * pParent OPTIONAL
Return Value:
None
--*/ : m_tm(tm), CDialog(CSelDate::IDD, pParent) { //{{AFX_DATA_INIT(CSelDate)
//}}AFX_DATA_INIT
}
void CSelDate::DoDataExchange( IN CDataExchange * pDX ) /*++
Routine Description:
Initialise/Store Control Data
Arguments:
CDataExchange * pDX : Data exchange object
Return Value:
None
--*/ { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSelDate)
DDX_Control(pDX, IDC_MSACALCTRL, m_cal); //}}AFX_DATA_MAP
}
//
// Message Map
//
BEGIN_MESSAGE_MAP(CSelDate, CDialog) //{{AFX_MSG_MAP(CSelDate)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL IsSystemDBCS() /*++
Routine Description:
Helper function to determine if we're running on a DBCS function
Arguments:
None
Return Value:
TRUE if we're on a DBCS system, FALSE otherwise.
--*/ { WORD wPrimaryLangID = PRIMARYLANGID(GetSystemDefaultLangID());
return wPrimaryLangID == LANG_JAPANESE || wPrimaryLangID == LANG_CHINESE || wPrimaryLangID == LANG_KOREAN; }
//
// Message Handlers
//
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
BOOL CSelDate::OnInitDialog() /*++
Routine Description:
WM_INITDIALOG handler. Initialize the dialog.
Arguments:
None.
Return Value:
TRUE if focus is to be set automatically, FALSE if the focus is already set.
--*/ { CDialog::OnInitDialog();
//
// Note: SetMonth before SetDay, otherwise the 31 is not
// considered a valid date.
//
m_cal.SetBackColor(GetSysColor(COLOR_BTNFACE)); m_cal.SetYear((SHORT)m_tm.GetYear()); m_cal.SetMonth((SHORT)m_tm.GetMonth()); m_cal.SetDay((SHORT)m_tm.GetDay());
if (IsSystemDBCS()) { //
// Set localisation defaults (override dlginit settings,
// inserted by the msdev dialog editor) This is necessary
// to override a problem in DBCS version of calendar OCX.
//
m_cal.SetDayLength(0); m_cal.SetMonthLength(0); m_cal.SetDayFont(NULL); m_cal.SetGridFont(NULL); m_cal.SetTitleFont(NULL); }
return TRUE; }
void CSelDate::OnOK() /*++
Routine Description:
'OK' button handler
Arguments:
None
Return Value:
None
--*/ { int year = m_cal.GetYear(); int month = m_cal.GetMonth(); int day = m_cal.GetDay(); int hour = m_tm.GetHour(); int minute = m_tm.GetMinute(); int sec = m_tm.GetSecond();
if (!year || !month || !day) { ::AfxMessageBox(IDS_NO_DATE); return; }
if (year > 2037 || year < 1970) { ::AfxMessageBox(IDS_BAD_DATE); return; }
m_tm = CTime(year, month, day, hour, minute, sec);
if (m_tm <= CTime::GetCurrentTime()) { if (::AfxMessageBox(IDS_WRN_OLD_DATE, MB_YESNO) != IDYES) { return; } }
CDialog::OnOK(); }
|