home *** CD-ROM | disk | FTP | other *** search
- /*
- Module : DATENTRY.H
- Purpose: implementation to a number of classes to allow data entry of the date/time classes
- Created: PJN / DATE/1 / 20-02-1996
- History: None
-
- Copyright (c) 1996 by PJ Naughter.
- All rights reserved.
-
- */
-
- ///////////////////////////////// Includes //////////////////////////////////
- #include "stdafx.h"
- #include "resource.h"
- #include "dtime.h"
- #include "dentry.h"
- #include "dtimeres.h"
-
-
-
-
- ////////////////////////////////// Macros ///////////////////////////////////
- #ifdef _DEBUG
- #undef THIS_FILE
- static char BASED_CODE THIS_FILE[] = __FILE__;
- #define new DEBUG_NEW
- #endif
-
-
-
- ////////////////////////////////// Helper Functions ///////////////////////////
-
- void DDX_CBData(CDataExchange* pDX, int nIDC, DWORD& dwData)
- {
- HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
- ASSERT(hWndCtrl != NULL);
- CComboBox Combo;
- Combo.Attach(hWndCtrl);
-
- if (pDX->m_bSaveAndValidate)
- {
- //Get the Item Data for the Currently selected item
- int nIndex = Combo.GetCurSel();
- dwData = Combo.GetItemData(nIndex);
- }
- else
- {
- //Select the item which has Item Data equal to dwData
- int nItems = Combo.GetCount();
- ASSERT(nItems != CB_ERR);
- for (int i=0; i<nItems; i++)
- {
- if (Combo.GetItemData(i) == dwData)
- {
- Combo.SetCurSel(i);
- break;
- }
- }
- }
-
- Combo.Detach();
- }
-
-
-
-
-
- ////////////////////////////////// Implementation /////////////////////////////
- IMPLEMENT_DYNCREATE(CDatePropertyPage, CPropertyPage)
-
-
- BEGIN_MESSAGE_MAP(CDatePropertyPage, CPropertyPage)
- //{{AFX_MSG_MAP(CDatePropertyPage)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CDatePropertyPage::CDatePropertyPage()
- {
- m_dwFlags = 0;
- m_Date = CDate::FirstCurrentYear();
- }
-
-
- CDatePropertyPage::CDatePropertyPage(UINT nIDTemplate, UINT nIDCaption) : CPropertyPage(nIDTemplate, nIDCaption)
- {
- m_dwFlags = 0;
- m_Date = CDate::FirstCurrentYear();
- }
-
-
- CDatePropertyPage::~CDatePropertyPage()
- {
- }
-
-
-
-
-
-
-
-
- //////////////////////// CCDatePropertySheet implementation ///////////////////
-
-
- IMPLEMENT_DYNCREATE(CDatePropertySheet, CPropertySheet)
-
-
- BEGIN_MESSAGE_MAP(CDatePropertySheet, CPropertySheet)
- //{{AFX_MSG_MAP(CDatePropertySheet)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CDatePropertySheet::CDatePropertySheet()
- {
- }
-
-
- CDatePropertySheet::CDatePropertySheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage, DWORD dwFlags) : CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
- {
- m_dwFlags = dwFlags;
- }
-
-
- CDatePropertySheet::CDatePropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage, DWORD dwFlags) : CPropertySheet(pszCaption, pParentWnd, iSelectPage)
- {
- m_dwFlags = dwFlags;
- }
-
-
- CDatePropertySheet::~CDatePropertySheet()
- {
- }
-
-
-
-
-
-
- //////////////////////// CCDateDOMPage implementation /////////////////////////
-
- IMPLEMENT_DYNCREATE(CCDateDOMPage, CDatePropertyPage)
-
- BEGIN_MESSAGE_MAP(CCDateDOMPage, CDatePropertyPage)
- //{{AFX_MSG_MAP(CCDateDOMPage)
- ON_BN_CLICKED(IDC_INVALID, OnInvalid)
- ON_BN_CLICKED(IDC_TODAY, OnToday)
- ON_CBN_SELCHANGE(IDC_DISPLAY, OnSelchangeDisplay)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CCDateDOMPage::CCDateDOMPage() : CDatePropertyPage(CCDateDOMPage::IDD)
- {
- //{{AFX_DATA_INIT(CCDateDOMPage)
- m_nDay = 0;
- m_lYear = 0;
- m_bInvalid = FALSE;
- //}}AFX_DATA_INIT
-
- m_bInvalid = !m_Date.IsValid();
- m_nDay = m_Date.GetDay();
- m_nMonth = m_Date.GetMonth();
- m_lYear = m_Date.GetYear();
- }
-
-
- CCDateDOMPage::~CCDateDOMPage()
- {
- }
-
-
- void CCDateDOMPage::DoDataExchange(CDataExchange* pDX)
- {
- CDatePropertyPage::DoDataExchange(pDX);
-
- if (!pDX->m_bSaveAndValidate)
- {
- m_bInvalid = !m_Date.IsValid();
- if (!m_bInvalid)
- {
- m_lYear = m_Date.GetYear();
- m_nMonth = m_Date.GetMonth();
- m_nDay = m_Date.GetDay();
- }
- }
-
- //{{AFX_DATA_MAP(CCDateDOMPage)
- DDX_Control(pDX, IDC_UPDOWN_YEAR, m_SpinYear);
- DDX_Control(pDX, IDC_UPDOWN_DAY, m_SpinDay);
- DDX_Text(pDX, IDC_DAY, m_nDay);
- //DDV_MinMaxUInt(pDX, m_nDay, 1, 31);
- DDX_Text(pDX, IDC_YEAR, m_lYear);
- DDX_Check(pDX, IDC_INVALID, m_bInvalid);
- //}}AFX_DATA_MAP
-
- if (pDX->m_bSaveAndValidate)
- {
- DDX_CBIndex(pDX, IDC_MONTH, (int&) m_nMonth);
- m_nMonth++;
- }
- else
- {
- int nMonthIndex = m_nMonth-1;
- DDX_CBIndex(pDX, IDC_MONTH, nMonthIndex);
- }
-
- pDX->PrepareEditCtrl(IDC_DAY);
- DDV_MinMaxUInt(pDX, m_nDay, 1, CDate::DaysInMonth(m_nMonth, m_lYear));
-
- if (pDX->m_bSaveAndValidate)
- {
- if (m_bInvalid)
- m_Date = CDate();
- else
- {
- #ifdef _DEBUG
- BOOL bDoAsserts = CDate::SetDoConstructorAsserts(FALSE);
- #endif
- m_Date = CDate(m_lYear, m_nMonth, (WORD) m_nDay);
- #ifdef _DEBUG
- CDate::SetDoConstructorAsserts(bDoAsserts);
- #endif
- }
- }
- else
- {
- //Enable / Disable controls
- OnInvalid();
- }
- }
-
-
- BOOL CCDateDOMPage::OnInitDialog()
- {
- //Add the month strings
- CComboBox* pMonthCombo = (CComboBox*) GetDlgItem(IDC_MONTH);
- ASSERT(pMonthCombo);
- for (WORD i=1; i<13; i++)
- pMonthCombo->AddString(CDate::GetFullStringMonth(i));
-
- //Add the format selection strings (Ordering of strings is the same as
- //the CDateCurrentPage enum
- CComboBox* pDisplayCombo = (CComboBox*) GetDlgItem(IDC_DISPLAY);
- ASSERT(pDisplayCombo);
- CString s;
- BOOL bSuccess = s.LoadString(IDS_DAY_OF_MONTH);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- bSuccess = s.LoadString(IDS_DAY_OF_YEAR);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- bSuccess = s.LoadString(IDS_WEEK_OF_MONTH);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- bSuccess = s.LoadString(IDS_WEEK_OF_YEAR);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- pDisplayCombo->SetCurSel(0);
-
- //Call up to the parent
- BOOL rval = CDatePropertyPage::OnInitDialog();
-
- //Set the ranges for the spin controls
- m_SpinYear.SetRange(UD_MINVAL, UD_MAXVAL);
- m_SpinDay.SetRange(1, 31);
-
- //Hide the invalid check box if required
- if (m_dwFlags & DT_ONLYVALID)
- {
- ASSERT(GetDlgItem(IDC_INVALID));
- GetDlgItem(IDC_INVALID)->ShowWindow(SW_HIDE);
- }
-
- //Hide the display as combo if required
- if (m_dwFlags & DT_NODISPLAYCOMBO)
- {
- ASSERT(GetDlgItem(IDC_DISPLAY));
- ASSERT(GetDlgItem(IDC_DISPLAY_AS_PROMPT));
- GetDlgItem(IDC_DISPLAY)->ShowWindow(SW_HIDE);
- GetDlgItem(IDC_DISPLAY_AS_PROMPT)->ShowWindow(SW_HIDE);
- }
-
- return rval;
- }
-
-
- void CCDateDOMPage::OnInvalid()
- {
- //if any of these assert then it is likely that the
- //wrong dialog template has been loaded or the
- //correct one could not be found
- ASSERT(GetDlgItem(IDC_INVALID));
- ASSERT(GetDlgItem(IDC_DAY_PROMPT));
- ASSERT(GetDlgItem(IDC_DAY));
- ASSERT(GetDlgItem(IDC_MONTH_PROMPT));
- ASSERT(GetDlgItem(IDC_MONTH));
- ASSERT(GetDlgItem(IDC_YEAR_PROMPT));
- ASSERT(GetDlgItem(IDC_YEAR));
- ASSERT(GetDlgItem(IDC_TODAY));
- ASSERT(GetDlgItem(IDC_DISPLAY));
- ASSERT(GetDlgItem(IDC_DISPLAY_AS_PROMPT));
-
-
- BOOL bValid = !((CButton*) GetDlgItem(IDC_INVALID))->GetCheck();
- m_SpinDay.EnableWindow(bValid);
- m_SpinYear.EnableWindow(bValid);
- GetDlgItem(IDC_DAY_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_DAY)->EnableWindow(bValid);
- GetDlgItem(IDC_MONTH_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_MONTH)->EnableWindow(bValid);
- GetDlgItem(IDC_YEAR_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_YEAR)->EnableWindow(bValid);
- GetDlgItem(IDC_TODAY)->EnableWindow(bValid);
- GetDlgItem(IDC_DISPLAY)->EnableWindow(bValid);
- GetDlgItem(IDC_DISPLAY_AS_PROMPT)->EnableWindow(bValid);
- }
-
-
- void CCDateDOMPage::OnToday()
- {
- m_Date = CDate::CurrentDate();
- UpdateData(FALSE);
- }
-
-
- void CCDateDOMPage::OnSelchangeDisplay()
- {
- CComboBox* pDisplayCombo = (CComboBox*) GetDlgItem(IDC_DISPLAY);
- ASSERT(pDisplayCombo);
-
- switch (pDisplayCombo->GetCurSel())
- {
- case 0: GetParent()->PostMessage(WM_COMMAND, ID_DOM); break;
- case 1: GetParent()->PostMessage(WM_COMMAND, ID_DOY); break;
- case 2: GetParent()->PostMessage(WM_COMMAND, ID_WOM); break;
- case 3: GetParent()->PostMessage(WM_COMMAND, ID_WOY); break;
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- //////////////////////// CCDateDOYPage implementation /////////////////////////
-
- IMPLEMENT_DYNCREATE(CCDateDOYPage, CDatePropertyPage)
-
- BEGIN_MESSAGE_MAP(CCDateDOYPage, CDatePropertyPage)
- //{{AFX_MSG_MAP(CCDateDOYPage)
- ON_BN_CLICKED(IDC_INVALID, OnInvalid)
- ON_BN_CLICKED(IDC_TODAY, OnToday)
- ON_CBN_SELCHANGE(IDC_DISPLAY, OnSelchangeDisplay)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
-
- CCDateDOYPage::CCDateDOYPage() : CDatePropertyPage(CCDateDOYPage::IDD)
- {
- //{{AFX_DATA_INIT(CCDateDOYPage)
- m_nDay = 0;
- m_bInvalid = FALSE;
- m_lYear = 0;
- //}}AFX_DATA_INIT
-
- m_bInvalid = !m_Date.IsValid();
- m_nDay = m_Date.DaysSinceJan0();
- m_lYear = m_Date.GetYear();
- }
-
-
- CCDateDOYPage::~CCDateDOYPage()
- {
- }
-
-
- void CCDateDOYPage::DoDataExchange(CDataExchange* pDX)
- {
- CDatePropertyPage::DoDataExchange(pDX);
-
- if (!pDX->m_bSaveAndValidate)
- {
- m_bInvalid = !m_Date.IsValid();
- if (!m_bInvalid)
- {
- m_lYear = m_Date.GetYear();
- m_nDay = m_Date.DaysSinceJan0();
- }
- }
-
- //{{AFX_DATA_MAP(CCDateDOYPage)
- DDX_Control(pDX, IDC_UPDOWN_YEAR, m_SpinYear);
- DDX_Control(pDX, IDC_UPDOWN_DAY, m_SpinDay);
- DDX_Text(pDX, IDC_DAY, m_nDay);
- DDX_Check(pDX, IDC_INVALID, m_bInvalid);
- DDX_Text(pDX, IDC_YEAR, m_lYear);
- //}}AFX_DATA_MAP
- pDX->PrepareEditCtrl(IDC_DAY);
- DDV_MinMaxUInt(pDX, m_nDay, 1, CDate::DaysInYear(m_lYear));
-
- if (pDX->m_bSaveAndValidate)
- {
- if (m_bInvalid)
- m_Date = CDate();
- else
- {
- #ifdef _DEBUG
- BOOL bDoAsserts = CDate::SetDoConstructorAsserts(FALSE);
- #endif
- m_Date = CDate(m_lYear, 1, 1) + m_nDay - 1;
- #ifdef _DEBUG
- CDate::SetDoConstructorAsserts(bDoAsserts);
- #endif
- }
- }
- else
- {
- //Enable / Disable controls
- OnInvalid();
- }
- }
-
-
- void CCDateDOYPage::OnInvalid()
- {
- //if any of these assert then it is likely that the
- //wrong dialog template has been loaded or the
- //correct one could not be found
- ASSERT(GetDlgItem(IDC_INVALID));
- ASSERT(GetDlgItem(IDC_DAY_PROMPT));
- ASSERT(GetDlgItem(IDC_DAY));
- ASSERT(GetDlgItem(IDC_YEAR_PROMPT));
- ASSERT(GetDlgItem(IDC_YEAR));
- ASSERT(GetDlgItem(IDC_TODAY));
- ASSERT(GetDlgItem(IDC_DISPLAY));
- ASSERT(GetDlgItem(IDC_DISPLAY_AS_PROMPT));
-
- BOOL bValid = !((CButton*) GetDlgItem(IDC_INVALID))->GetCheck();
- m_SpinDay.EnableWindow(bValid);
- m_SpinYear.EnableWindow(bValid);
- GetDlgItem(IDC_DAY_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_DAY)->EnableWindow(bValid);
- GetDlgItem(IDC_YEAR_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_YEAR)->EnableWindow(bValid);
- GetDlgItem(IDC_TODAY)->EnableWindow(bValid);
- GetDlgItem(IDC_DISPLAY)->EnableWindow(bValid);
- GetDlgItem(IDC_DISPLAY_AS_PROMPT)->EnableWindow(bValid);
- }
-
-
- BOOL CCDateDOYPage::OnInitDialog()
- {
- //Add the format selection strings (Ordering of strings is the same as
- //the CDateCurrentPage enum
- CComboBox* pDisplayCombo = (CComboBox*) GetDlgItem(IDC_DISPLAY);
- ASSERT(pDisplayCombo);
- CString s;
- BOOL bSuccess = s.LoadString(IDS_DAY_OF_MONTH);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- bSuccess = s.LoadString(IDS_DAY_OF_YEAR);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- bSuccess = s.LoadString(IDS_WEEK_OF_MONTH);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- bSuccess = s.LoadString(IDS_WEEK_OF_YEAR);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- pDisplayCombo->SetCurSel(1);
-
- //Call up to the parent
- BOOL rval = CDatePropertyPage::OnInitDialog();
-
- //Set the ranges for the spin controls
- m_SpinYear.SetRange(UD_MINVAL, UD_MAXVAL);
- m_SpinDay.SetRange(1, 366);
-
- //Hide the invalid check box if required
- if (m_dwFlags & DT_ONLYVALID)
- {
- ASSERT(GetDlgItem(IDC_INVALID));
- GetDlgItem(IDC_INVALID)->ShowWindow(SW_HIDE);
- }
-
- //Hide the display as combo if required
- if (m_dwFlags & DT_NODISPLAYCOMBO)
- {
- ASSERT(GetDlgItem(IDC_DISPLAY));
- ASSERT(GetDlgItem(IDC_DISPLAY_AS_PROMPT));
- GetDlgItem(IDC_DISPLAY)->ShowWindow(SW_HIDE);
- GetDlgItem(IDC_DISPLAY_AS_PROMPT)->ShowWindow(SW_HIDE);
- }
-
- return rval;
- }
-
-
- void CCDateDOYPage::OnToday()
- {
- m_Date = CDate::CurrentDate();
- UpdateData(FALSE);
- }
-
-
- void CCDateDOYPage::OnSelchangeDisplay()
- {
- CComboBox* pDisplayCombo = (CComboBox*) GetDlgItem(IDC_DISPLAY);
- ASSERT(pDisplayCombo);
-
- switch (pDisplayCombo->GetCurSel())
- {
- case 0: GetParent()->PostMessage(WM_COMMAND, ID_DOM); break;
- case 1: GetParent()->PostMessage(WM_COMMAND, ID_DOY); break;
- case 2: GetParent()->PostMessage(WM_COMMAND, ID_WOM); break;
- case 3: GetParent()->PostMessage(WM_COMMAND, ID_WOY); break;
- }
- }
-
-
-
-
-
-
-
-
-
- //////////////////////// CCDateWOMPage implementation /////////////////////////
-
- IMPLEMENT_DYNCREATE(CCDateWOMPage, CDatePropertyPage)
-
- BEGIN_MESSAGE_MAP(CCDateWOMPage, CDatePropertyPage)
- //{{AFX_MSG_MAP(CCDateWOMPage)
- ON_BN_CLICKED(IDC_INVALID, OnInvalid)
- ON_BN_CLICKED(IDC_TODAY, OnToday)
- ON_CBN_SELCHANGE(IDC_DISPLAY, OnSelchangeDisplay)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CCDateWOMPage::CCDateWOMPage() : CDatePropertyPage(CCDateWOMPage::IDD)
- {
- //{{AFX_DATA_INIT(CCDateWOMPage)
- m_bInvalid = FALSE;
- m_lYear = 0;
- //}}AFX_DATA_INIT
-
- m_bInvalid = !m_Date.IsValid();
- m_nDayOfWeek = m_Date.GetDayOfWeek();
- m_lYear = m_Date.GetYear();
- m_nWeek = 1;
- m_nMonth = m_Date.GetMonth();
- }
-
-
- CCDateWOMPage::~CCDateWOMPage()
- {
- }
-
-
- void CCDateWOMPage::DoDataExchange(CDataExchange* pDX)
- {
- CDatePropertyPage::DoDataExchange(pDX);
-
- if (!pDX->m_bSaveAndValidate)
- {
- m_bInvalid = !m_Date.IsValid();
- if (!m_bInvalid)
- {
- m_lYear = m_Date.GetYear();
- m_nMonth = m_Date.GetMonth();
- m_nDayOfWeek = m_Date.GetDayOfWeek();
- m_nWeek = (WORD) (((m_Date - CDate(m_lYear, (WORD) m_nMonth, (WORD) 1, (WORD) m_nDayOfWeek)) / 7) + 1);
- }
- }
-
- //{{AFX_DATA_MAP(CCDateWOMPage)
- DDX_Control(pDX, IDC_UPDOWN_YEAR, m_SpinYear);
- DDX_Check(pDX, IDC_INVALID, m_bInvalid);
- DDX_Text(pDX, IDC_YEAR, m_lYear);
- //}}AFX_DATA_MAP
-
- if (pDX->m_bSaveAndValidate)
- {
- int nMonthIndex;
- DDX_CBIndex(pDX, IDC_MONTH, nMonthIndex);
- m_nMonth = (WORD) (nMonthIndex + 1);
- int nDayOfWeekIndex;
- DDX_CBIndex(pDX, IDC_WEEKDAY, nDayOfWeekIndex);
- m_nDayOfWeek = (WORD) (nDayOfWeekIndex + 1);
- int nWeekIndex;
- DDX_CBIndex(pDX, IDC_WEEK, nWeekIndex);
- m_nWeek = (WORD) (nWeekIndex + 1);
- }
- else
- {
- int nMonthIndex = m_nMonth-1;
- DDX_CBIndex(pDX, IDC_MONTH, nMonthIndex);
- int nDayOfWeekIndex = m_nDayOfWeek-1;
- DDX_CBIndex(pDX, IDC_WEEKDAY, nDayOfWeekIndex);
- int nWeekIndex = m_nWeek-1;
- DDX_CBIndex(pDX, IDC_WEEK, nWeekIndex);
- }
-
- if (pDX->m_bSaveAndValidate)
- {
- if (m_bInvalid)
- m_Date = CDate();
- else
- {
- #ifdef _DEBUG
- BOOL bDoAsserts = CDate::SetDoConstructorAsserts(FALSE);
- #endif
- m_Date = CDate(m_lYear, m_nMonth, m_nWeek, m_nDayOfWeek);
- #ifdef _DEBUG
- CDate::SetDoConstructorAsserts(bDoAsserts);
- #endif
- }
- }
- else
- {
- //Enable / Disable controls
- OnInvalid();
- }
- }
-
-
- BOOL CCDateWOMPage::OnInitDialog()
- {
- //Add the month strings
- CComboBox* pMonthCombo = (CComboBox*) GetDlgItem(IDC_MONTH);
- ASSERT(pMonthCombo);
- for (WORD i=1; i<13; i++)
- pMonthCombo->AddString(CDate::GetFullStringMonth(i));
-
- //Add the day of week strings
- CComboBox* pDayOfWeekCombo = (CComboBox*) GetDlgItem(IDC_WEEKDAY);
- ASSERT(pDayOfWeekCombo);
- for (i=1; i<8; i++)
- pDayOfWeekCombo->AddString(CDate::GetFullStringDayOfWeek(i));
-
- //Add the week strings
- CComboBox* pWeekCombo = (CComboBox*) GetDlgItem(IDC_WEEK);
- ASSERT(pWeekCombo);
-
- CString sText;
- BOOL bSuccess = sText.LoadString(IDS_1ST);
- ASSERT(bSuccess);
- pWeekCombo->AddString(sText);
-
- bSuccess = sText.LoadString(IDS_2ND);
- ASSERT(bSuccess);
- pWeekCombo->AddString(sText);
-
- bSuccess = sText.LoadString(IDS_3RD);
- ASSERT(bSuccess);
- pWeekCombo->AddString(sText);
-
- bSuccess = sText.LoadString(IDS_4TH);
- ASSERT(bSuccess);
- pWeekCombo->AddString(sText);
-
- bSuccess = sText.LoadString(IDS_LAST);
- ASSERT(bSuccess);
- pWeekCombo->AddString(sText);
-
- //Add the format selection strings (Ordering of strings is the same as
- //the CDateCurrentPage enum
- CComboBox* pDisplayCombo = (CComboBox*) GetDlgItem(IDC_DISPLAY);
- ASSERT(pDisplayCombo);
- CString s;
- bSuccess = s.LoadString(IDS_DAY_OF_MONTH);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- bSuccess = s.LoadString(IDS_DAY_OF_YEAR);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- bSuccess = s.LoadString(IDS_WEEK_OF_MONTH);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- bSuccess = s.LoadString(IDS_WEEK_OF_YEAR);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- pDisplayCombo->SetCurSel(2);
-
- //Call up to the parent
- BOOL rval = CDatePropertyPage::OnInitDialog();
-
- //Set the ranges for the spin controls
- m_SpinYear.SetRange(UD_MINVAL, UD_MAXVAL);
-
- //Hide the invalid check box if required
- if (m_dwFlags & DT_ONLYVALID)
- {
- ASSERT(GetDlgItem(IDC_INVALID));
- GetDlgItem(IDC_INVALID)->ShowWindow(SW_HIDE);
- }
-
- //Hide the display as combo if required
- if (m_dwFlags & DT_NODISPLAYCOMBO)
- {
- ASSERT(GetDlgItem(IDC_DISPLAY));
- ASSERT(GetDlgItem(IDC_DISPLAY_AS_PROMPT));
- GetDlgItem(IDC_DISPLAY)->ShowWindow(SW_HIDE);
- GetDlgItem(IDC_DISPLAY_AS_PROMPT)->ShowWindow(SW_HIDE);
- }
-
- return rval;
- }
-
-
- void CCDateWOMPage::OnInvalid()
- {
- //if any of these assert then it is likely that the
- //wrong dialog template has been loaded or the
- //correct one could not be found
- ASSERT(GetDlgItem(IDC_INVALID));
- ASSERT(GetDlgItem(IDC_WEEK_PROMPT));
- ASSERT(GetDlgItem(IDC_WEEK));
- ASSERT(GetDlgItem(IDC_WEEKDAY_PROMPT));
- ASSERT(GetDlgItem(IDC_WEEKDAY));
- ASSERT(GetDlgItem(IDC_MONTH_PROMPT));
- ASSERT(GetDlgItem(IDC_MONTH));
- ASSERT(GetDlgItem(IDC_YEAR_PROMPT));
- ASSERT(GetDlgItem(IDC_YEAR));
- ASSERT(GetDlgItem(IDC_TODAY));
- ASSERT(GetDlgItem(IDC_DISPLAY));
- ASSERT(GetDlgItem(IDC_DISPLAY_AS_PROMPT));
-
- BOOL bValid = !((CButton*) GetDlgItem(IDC_INVALID))->GetCheck();
- m_SpinYear.EnableWindow(bValid);
- GetDlgItem(IDC_WEEK_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_WEEK)->EnableWindow(bValid);
- GetDlgItem(IDC_WEEKDAY_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_WEEKDAY)->EnableWindow(bValid);
- GetDlgItem(IDC_MONTH_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_MONTH)->EnableWindow(bValid);
- GetDlgItem(IDC_YEAR_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_YEAR)->EnableWindow(bValid);
- GetDlgItem(IDC_TODAY)->EnableWindow(bValid);
- GetDlgItem(IDC_DISPLAY)->EnableWindow(bValid);
- GetDlgItem(IDC_DISPLAY_AS_PROMPT)->EnableWindow(bValid);
- }
-
-
- void CCDateWOMPage::OnToday()
- {
- m_Date = CDate::CurrentDate();
- UpdateData(FALSE);
- }
-
-
- void CCDateWOMPage::OnSelchangeDisplay()
- {
- CComboBox* pDisplayCombo = (CComboBox*) GetDlgItem(IDC_DISPLAY);
- ASSERT(pDisplayCombo);
-
- switch (pDisplayCombo->GetCurSel())
- {
- case 0: GetParent()->PostMessage(WM_COMMAND, ID_DOM); break;
- case 1: GetParent()->PostMessage(WM_COMMAND, ID_DOY); break;
- case 2: GetParent()->PostMessage(WM_COMMAND, ID_WOM); break;
- case 3: GetParent()->PostMessage(WM_COMMAND, ID_WOY); break;
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- //////////////////////// CCDateWOYPage implementation /////////////////////////
-
- IMPLEMENT_DYNCREATE(CCDateWOYPage, CDatePropertyPage)
-
- BEGIN_MESSAGE_MAP(CCDateWOYPage, CDatePropertyPage)
- //{{AFX_MSG_MAP(CCDateWOYPage)
- ON_BN_CLICKED(IDC_INVALID, OnInvalid)
- ON_BN_CLICKED(IDC_TODAY, OnToday)
- ON_CBN_SELCHANGE(IDC_DISPLAY, OnSelchangeDisplay)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CCDateWOYPage::CCDateWOYPage() : CDatePropertyPage(CCDateWOYPage::IDD)
- {
- //{{AFX_DATA_INIT(CCDateWOYPage)
- m_bInvalid = FALSE;
- m_lYear = 0;
- //}}AFX_DATA_INIT
- m_nDayOfWeek = CDate::SUNDAY;
- m_nWeek = 1;
- m_lYear = CDate::CurrentYear();
- }
-
-
- CCDateWOYPage::~CCDateWOYPage()
- {
- }
-
-
- void CCDateWOYPage::DoDataExchange(CDataExchange* pDX)
- {
- CDatePropertyPage::DoDataExchange(pDX);
-
- if (!pDX->m_bSaveAndValidate)
- {
- m_bInvalid = !m_Date.IsValid();
- if (!m_bInvalid)
- {
- m_lYear = m_Date.GetYear();
- m_nDayOfWeek = m_Date.GetDayOfWeek();
- m_nWeek = ((m_Date - CDate(m_lYear, 1, 1, m_nDayOfWeek)) / 7) + 1;
- }
- }
-
- //{{AFX_DATA_MAP(CCDateWOYPage)
- DDX_Control(pDX, IDC_UPDOWN_YEAR, m_SpinYear);
- DDX_Control(pDX, IDC_UPDOWN_WEEK, m_SpinWeek);
- DDX_Check(pDX, IDC_INVALID, m_bInvalid);
- DDX_Text(pDX, IDC_YEAR, m_lYear);
- DDX_Text(pDX, IDC_WEEK, m_nWeek);
- DDV_MinMaxUInt(pDX, m_nWeek, 1, 53);
- //}}AFX_DATA_MAP
-
- if (pDX->m_bSaveAndValidate)
- {
- DDX_CBIndex(pDX, IDC_WEEKDAY, (int&) m_nDayOfWeek);
- m_nDayOfWeek++;
- }
- else
- {
- int nDayOfWeekIndex = m_nDayOfWeek-1;
- DDX_CBIndex(pDX, IDC_WEEKDAY, nDayOfWeekIndex);
- }
-
- if (pDX->m_bSaveAndValidate)
- {
- if (m_bInvalid)
- m_Date = CDate();
- else
- {
- #ifdef _DEBUG
- BOOL bDoAsserts = CDate::SetDoConstructorAsserts(FALSE);
- #endif
- m_Date = CDate(m_lYear, 1, 1, m_nDayOfWeek) + (7*(m_nWeek-1));
- #ifdef _DEBUG
- CDate::SetDoConstructorAsserts(bDoAsserts);
- #endif
- }
- }
- else
- {
- //Enable / Disable controls
- OnInvalid();
- }
- }
-
-
- BOOL CCDateWOYPage::OnInitDialog()
- {
- //Add the day of week strings
- CComboBox* pDayOfWeekCombo = (CComboBox*) GetDlgItem(IDC_WEEKDAY);
- ASSERT(pDayOfWeekCombo);
- for (WORD i=1; i<8; i++)
- pDayOfWeekCombo->AddString(CDate::GetFullStringDayOfWeek(i));
-
- //Add the format selection strings (Ordering of strings is the same as
- //the CDateCurrentPage enum
- CComboBox* pDisplayCombo = (CComboBox*) GetDlgItem(IDC_DISPLAY);
- ASSERT(pDisplayCombo);
- CString s;
- BOOL bSuccess = s.LoadString(IDS_DAY_OF_MONTH);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- bSuccess = s.LoadString(IDS_DAY_OF_YEAR);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- bSuccess = s.LoadString(IDS_WEEK_OF_MONTH);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- bSuccess = s.LoadString(IDS_WEEK_OF_YEAR);
- ASSERT(bSuccess);
- pDisplayCombo->AddString(s);
- pDisplayCombo->SetCurSel(3);
-
- //Call up to the parent
- BOOL rval = CDatePropertyPage::OnInitDialog();
-
- //Set the ranges for the spin controls
- m_SpinYear.SetRange(UD_MINVAL, UD_MAXVAL);
- m_SpinWeek.SetRange(1, 53);
-
- //Hide the invalid check box if required
- if (m_dwFlags & DT_ONLYVALID)
- {
- ASSERT(GetDlgItem(IDC_INVALID));
- GetDlgItem(IDC_INVALID)->ShowWindow(SW_HIDE);
- }
-
- //Hide the display as combo if required
- if (m_dwFlags & DT_NODISPLAYCOMBO)
- {
- ASSERT(GetDlgItem(IDC_DISPLAY));
- ASSERT(GetDlgItem(IDC_DISPLAY_AS_PROMPT));
- GetDlgItem(IDC_DISPLAY)->ShowWindow(SW_HIDE);
- GetDlgItem(IDC_DISPLAY_AS_PROMPT)->ShowWindow(SW_HIDE);
- }
-
- return rval;
- }
-
-
- void CCDateWOYPage::OnInvalid()
- {
- //if any of these assert then it is likely that the
- //wrong dialog template has been loaded or the
- //correct one could not be found
- ASSERT(GetDlgItem(IDC_INVALID));
- ASSERT(GetDlgItem(IDC_WEEK_PROMPT));
- ASSERT(GetDlgItem(IDC_WEEK));
- ASSERT(GetDlgItem(IDC_WEEKDAY_PROMPT));
- ASSERT(GetDlgItem(IDC_WEEKDAY));
- ASSERT(GetDlgItem(IDC_YEAR_PROMPT));
- ASSERT(GetDlgItem(IDC_YEAR));
- ASSERT(GetDlgItem(IDC_TODAY));
- ASSERT(GetDlgItem(IDC_DISPLAY));
- ASSERT(GetDlgItem(IDC_DISPLAY_AS_PROMPT));
-
- BOOL bValid = !((CButton*) GetDlgItem(IDC_INVALID))->GetCheck();
- m_SpinYear.EnableWindow(bValid);
- m_SpinWeek.EnableWindow(bValid);
- GetDlgItem(IDC_WEEK_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_WEEK)->EnableWindow(bValid);
- GetDlgItem(IDC_WEEKDAY_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_WEEKDAY)->EnableWindow(bValid);
- GetDlgItem(IDC_YEAR_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_YEAR)->EnableWindow(bValid);
- GetDlgItem(IDC_TODAY)->EnableWindow(bValid);
- GetDlgItem(IDC_DISPLAY)->EnableWindow(bValid);
- GetDlgItem(IDC_DISPLAY_AS_PROMPT)->EnableWindow(bValid);
- }
-
-
- void CCDateWOYPage::OnToday()
- {
- m_Date = CDate::CurrentDate();
- UpdateData(FALSE);
- }
-
-
- void CCDateWOYPage::OnSelchangeDisplay()
- {
- CComboBox* pDisplayCombo = (CComboBox*) GetDlgItem(IDC_DISPLAY);
- ASSERT(pDisplayCombo);
-
- switch (pDisplayCombo->GetCurSel())
- {
- case 0: GetParent()->PostMessage(WM_COMMAND, ID_DOM); break;
- case 1: GetParent()->PostMessage(WM_COMMAND, ID_DOY); break;
- case 2: GetParent()->PostMessage(WM_COMMAND, ID_WOM); break;
- case 3: GetParent()->PostMessage(WM_COMMAND, ID_WOY); break;
- }
- }
-
-
-
-
-
-
-
-
-
- //////////////////////// CCLTimeOfDayHMSMPage implementation //////////////////
-
- IMPLEMENT_DYNCREATE(CCLTimeOfDayHMSMPage, CDatePropertyPage)
-
- BEGIN_MESSAGE_MAP(CCLTimeOfDayHMSMPage, CDatePropertyPage)
- //{{AFX_MSG_MAP(CCLTimeOfDayHMSMPage)
- ON_BN_CLICKED(IDC_INVALID, OnInvalid)
- ON_BN_CLICKED(IDC_NOW, OnNow)
- ON_BN_CLICKED(IDC_MIDDAY, OnMidday)
- ON_BN_CLICKED(IDC_MIDNIGHT, OnMidnight)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CCLTimeOfDayHMSMPage::CCLTimeOfDayHMSMPage() : CDatePropertyPage(CCLTimeOfDayHMSMPage::IDD)
- {
- //{{AFX_DATA_INIT(CCLTimeOfDayHMSMPage)
- m_nHour = 0;
- m_bInvalid = FALSE;
- m_nMinute = 0;
- m_nSecond = 0;
- //}}AFX_DATA_INIT
-
- m_bShowInvalid = TRUE;
- }
-
-
- CCLTimeOfDayHMSMPage::~CCLTimeOfDayHMSMPage()
- {
- }
-
-
- void CCLTimeOfDayHMSMPage::MarkAsValid()
- {
- //if any of these assert then it is likely that the
- //wrong dialog template has been loaded or the
- //correct one could not be found
- ASSERT(GetDlgItem(IDC_INVALID));
-
- ((CButton*) GetDlgItem(IDC_INVALID))->SetCheck(FALSE);
- UpdateData();
- }
-
-
- void CCLTimeOfDayHMSMPage::DoDataExchange(CDataExchange* pDX)
- {
- CDatePropertyPage::DoDataExchange(pDX);
-
- if (!pDX->m_bSaveAndValidate)
- {
- m_bInvalid = !m_Tod.IsValid();
- if (!m_bInvalid)
- {
- m_nHour = m_Tod.GetHour();
- m_nMinute = m_Tod.GetMinute();
- if (!(m_dwFlags & DT_NOSECONDS))
- m_nSecond = m_Tod.GetSecond();
- }
- }
-
- //{{AFX_DATA_MAP(CCLTimeOfDayHMSMPage)
- DDX_Control(pDX, IDC_UPDOWN_SECOND, m_SpinSecond);
- DDX_Control(pDX, IDC_UPDOWN_MINUTE, m_SpinMinute);
- DDX_Control(pDX, IDC_UPDOWN_HOUR, m_SpinHour);
- DDX_Text(pDX, IDC_HOUR, m_nHour);
- DDV_MinMaxUInt(pDX, m_nHour, 0, 23);
- DDX_Text(pDX, IDC_MINUTE, m_nMinute);
- DDV_MinMaxUInt(pDX, m_nMinute, 0, 59);
- DDX_Text(pDX, IDC_SECOND, m_nSecond);
- DDV_MinMaxUInt(pDX, m_nSecond, 0, 59);
- DDX_Check(pDX, IDC_INVALID, m_bInvalid);
- //}}AFX_DATA_MAP
-
- if (pDX->m_bSaveAndValidate)
- {
- if (m_bInvalid)
- m_Tod = CLTimeOfDay();
- else
- {
- #ifdef _DEBUG
- BOOL bDoAsserts = CLTimeOfDay::SetDoConstructorAsserts(FALSE);
- #endif
- m_Tod = CLTimeOfDay((WORD) m_nHour, (WORD) m_nMinute, (WORD) m_nSecond);
- #ifdef _DEBUG
- CLTimeOfDay::SetDoConstructorAsserts(bDoAsserts);
- #endif
- }
- }
- else
- {
- //Enable / Disable controls
- OnInvalid();
- }
- }
-
-
- BOOL CCLTimeOfDayHMSMPage::OnInitDialog()
- {
- BOOL rVal = CDatePropertyPage::OnInitDialog();
-
- //Set the ranges for the spin controls
- m_SpinHour.SetRange(0, 23);
- m_SpinMinute.SetRange(0, 59);
- m_SpinSecond.SetRange(0, 59);
-
- //hide the invalid check box if required
- if (m_dwFlags & DT_ONLYVALID)
- {
- ASSERT(GetDlgItem(IDC_INVALID));
- ((CButton*) GetDlgItem(IDC_INVALID))->ShowWindow(SW_HIDE);
- }
-
- //Hide the invalid check box if required
- if (!m_bShowInvalid)
- {
- ASSERT(GetDlgItem(IDC_INVALID));
- ((CButton*) GetDlgItem(IDC_INVALID))->ShowWindow(SW_HIDE);
- }
-
- //hide the second edit if required
- if (m_dwFlags & DT_NOSECONDS)
- {
- ASSERT(GetDlgItem(IDC_SECOND));
- GetDlgItem(IDC_SECOND)->ShowWindow(SW_HIDE);
- m_SpinSecond.ShowWindow(SW_HIDE);
- ASSERT(GetDlgItem(IDC_SECOND_PROMPT));
- GetDlgItem(IDC_SECOND_PROMPT)->ShowWindow(SW_HIDE);
- }
-
- return rVal;
- }
-
-
- void CCLTimeOfDayHMSMPage::OnInvalid()
- {
- //if any of these assert then it is likely that the
- //wrong dialog template has been loaded or the
- //correct one could not be found
- ASSERT(GetDlgItem(IDC_INVALID));
- ASSERT(GetDlgItem(IDC_HOUR_PROMPT));
- ASSERT(GetDlgItem(IDC_HOUR));
- ASSERT(GetDlgItem(IDC_MINUTE_PROMPT));
- ASSERT(GetDlgItem(IDC_MINUTE));
- ASSERT(GetDlgItem(IDC_SECOND_PROMPT));
- ASSERT(GetDlgItem(IDC_SECOND));
- ASSERT(GetDlgItem(IDC_NOW));
- ASSERT(GetDlgItem(IDC_MIDNIGHT));
- ASSERT(GetDlgItem(IDC_MIDDAY));
-
- BOOL bValid = !((CButton*) GetDlgItem(IDC_INVALID))->GetCheck();
- m_SpinHour.EnableWindow(bValid);
- m_SpinMinute.EnableWindow(bValid);
- m_SpinSecond.EnableWindow(bValid);
-
- GetDlgItem(IDC_HOUR_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_HOUR)->EnableWindow(bValid);
- GetDlgItem(IDC_MINUTE_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_MINUTE)->EnableWindow(bValid);
- GetDlgItem(IDC_SECOND_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_SECOND)->EnableWindow(bValid);
- GetDlgItem(IDC_NOW)->EnableWindow(bValid);
- GetDlgItem(IDC_MIDNIGHT)->EnableWindow(bValid);
- GetDlgItem(IDC_MIDDAY)->EnableWindow(bValid);
- }
-
-
- BOOL CCLTimeOfDayHMSMPage::OnSetActive()
- {
- BOOL rVal = CDatePropertyPage::OnSetActive();
-
- //inform the sheet of the change
- CWnd* pWnd = GetParent();
- ASSERT(pWnd);
- pWnd->PostMessage(UWM_TIMEOFDAY_NOTIFY);
-
- return rVal;
- }
-
-
- void CCLTimeOfDayHMSMPage::OnNow()
- {
- m_Tod = CLTimeOfDay::CurrentTimeOfDay(LOCAL);
- UpdateData(FALSE);
- }
-
-
- void CCLTimeOfDayHMSMPage::OnMidday()
- {
- m_Tod = CLTimeOfDay::Midday();
- UpdateData(FALSE);
- }
-
- void CCLTimeOfDayHMSMPage::OnMidnight()
- {
- m_Tod = CLTimeOfDay::Midnight();
- UpdateData(FALSE);
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
- //////////////////////// CCLTimeSpanDHMSMPage implementation //////////////////
-
- IMPLEMENT_DYNCREATE(CCLTimeSpanDHMSMPage, CDatePropertyPage)
-
- BEGIN_MESSAGE_MAP(CCLTimeSpanDHMSMPage, CDatePropertyPage)
- //{{AFX_MSG_MAP(CCLTimeSpanDHMSMPage)
- ON_BN_CLICKED(IDC_INVALID, OnInvalid)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CCLTimeSpanDHMSMPage::CCLTimeSpanDHMSMPage() : CDatePropertyPage(CCLTimeSpanDHMSMPage::IDD)
- {
- //{{AFX_DATA_INIT(CCLTimeSpanDHMSMPage)
- m_lDay = 0;
- m_nHour = 0;
- m_bInvalid = FALSE;
- m_nMinute = 0;
- m_nSecond = 0;
- //}}AFX_DATA_INIT
- }
-
-
- CCLTimeSpanDHMSMPage::~CCLTimeSpanDHMSMPage()
- {
- }
-
-
- void CCLTimeSpanDHMSMPage::DoDataExchange(CDataExchange* pDX)
- {
- CDatePropertyPage::DoDataExchange(pDX);
-
- if (!pDX->m_bSaveAndValidate)
- {
- m_bInvalid = !m_Ts.IsValid();
- if (!m_bInvalid)
- {
- m_lDay = m_Ts.GetTotalDays();
- m_nHour = m_Ts.GetHours();
- m_nMinute = m_Ts.GetMinutes();
- if (!(m_dwFlags & DT_NOSECONDS))
- m_nSecond = m_Ts.GetSeconds();
- }
- }
-
- //{{AFX_DATA_MAP(CCLTimeSpanDHMSMPage)
- DDX_Control(pDX, IDC_UPDOWN_SECOND, m_SpinSecond);
- DDX_Control(pDX, IDC_UPDOWN_MINUTE, m_SpinMinute);
- DDX_Control(pDX, IDC_UPDOWN_HOUR, m_SpinHour);
- DDX_Control(pDX, IDC_UPDOWN_DAY, m_SpinDay);
- DDX_Text(pDX, IDC_DAY, m_lDay);
- DDX_Text(pDX, IDC_HOUR, m_nHour);
- DDV_MinMaxUInt(pDX, m_nHour, 0, 23);
- DDX_Text(pDX, IDC_MINUTE, m_nMinute);
- DDV_MinMaxUInt(pDX, m_nMinute, 0, 59);
- DDX_Text(pDX, IDC_SECOND, m_nSecond);
- DDV_MinMaxUInt(pDX, m_nSecond, 0, 59);
- DDX_Check(pDX, IDC_INVALID, m_bInvalid);
- //}}AFX_DATA_MAP
-
- if (pDX->m_bSaveAndValidate)
- {
- if (m_bInvalid)
- m_Ts = CLTimeSpan();
- else
- {
- #ifdef _DEBUG
- BOOL bDoAsserts = CLTimeSpan::SetDoConstructorAsserts(FALSE);
- #endif
- m_Ts = CLTimeSpan(m_lDay, (WORD) m_nHour, (WORD) m_nMinute, (WORD) m_nSecond);
- #ifdef _DEBUG
- CLTimeSpan::SetDoConstructorAsserts(bDoAsserts);
- #endif
- }
- }
- else
- {
- //Enable / Disable controls
- OnInvalid();
- }
- }
-
-
- BOOL CCLTimeSpanDHMSMPage::OnInitDialog()
- {
- BOOL rVal = CDatePropertyPage::OnInitDialog();
-
- //Set the ranges for the spin controls
- m_SpinDay.SetRange(UD_MINVAL, UD_MAXVAL);
- m_SpinHour.SetRange(0, 23);
- m_SpinMinute.SetRange(0, 59);
- m_SpinSecond.SetRange(0, 59);
-
- //hide the invalid check box if required
- if (m_dwFlags & DT_ONLYVALID)
- {
- ASSERT(GetDlgItem(IDC_INVALID));
- ((CButton*) GetDlgItem(IDC_INVALID))->ShowWindow(SW_HIDE);
- }
-
- //hide the second edit if required
- if (m_dwFlags & DT_NOSECONDS)
- {
- ASSERT(GetDlgItem(IDC_SECOND));
- GetDlgItem(IDC_SECOND)->ShowWindow(SW_HIDE);
- m_SpinSecond.ShowWindow(SW_HIDE);
- ASSERT(GetDlgItem(IDC_SECOND_PROMPT));
- GetDlgItem(IDC_SECOND_PROMPT)->ShowWindow(SW_HIDE);
- }
-
- return rVal;
- }
-
-
- void CCLTimeSpanDHMSMPage::OnInvalid()
- {
- //if any of these assert then it is likely that the
- //wrong dialog template has been loaded or the
- //correct one could not be found
- ASSERT(GetDlgItem(IDC_INVALID));
- ASSERT(GetDlgItem(IDC_DAY_PROMPT));
- ASSERT(GetDlgItem(IDC_DAY));
- ASSERT(GetDlgItem(IDC_HOUR_PROMPT));
- ASSERT(GetDlgItem(IDC_HOUR));
- ASSERT(GetDlgItem(IDC_MINUTE_PROMPT));
- ASSERT(GetDlgItem(IDC_MINUTE));
- ASSERT(GetDlgItem(IDC_SECOND_PROMPT));
- ASSERT(GetDlgItem(IDC_SECOND));
-
- BOOL bValid = !((CButton*) GetDlgItem(IDC_INVALID))->GetCheck();
- m_SpinDay.EnableWindow(bValid);
- m_SpinHour.EnableWindow(bValid);
- m_SpinMinute.EnableWindow(bValid);
- m_SpinSecond.EnableWindow(bValid);
-
- GetDlgItem(IDC_DAY_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_DAY)->EnableWindow(bValid);
- GetDlgItem(IDC_HOUR_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_HOUR)->EnableWindow(bValid);
- GetDlgItem(IDC_MINUTE_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_MINUTE)->EnableWindow(bValid);
- GetDlgItem(IDC_SECOND_PROMPT)->EnableWindow(bValid);
- GetDlgItem(IDC_SECOND)->EnableWindow(bValid);
- }
-
-
-
-
-
-
-
-
-
- //////////////////////// CTimeFramePage implementation ////////////////
-
- IMPLEMENT_DYNCREATE(CTimeFramePage, CDatePropertyPage)
-
- BEGIN_MESSAGE_MAP(CTimeFramePage, CDatePropertyPage)
- //{{AFX_MSG_MAP(CTimeFramePage)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CTimeFramePage::CTimeFramePage() : CDatePropertyPage(CTimeFramePage::IDD)
- {
- //{{AFX_DATA_INIT(CTimeFramePage)
- //}}AFX_DATA_INIT
- m_TimeFrame = UCT;
- m_bInvalid = FALSE;
- }
-
-
- CTimeFramePage::~CTimeFramePage()
- {
- }
-
-
- void CTimeFramePage::DoDataExchange(CDataExchange* pDX)
- {
- CDatePropertyPage::DoDataExchange(pDX);
-
- //{{AFX_DATA_MAP(CCDateDOMTimeFramePage)
- //}}AFX_DATA_MAP
-
- DDX_CBData(pDX, IDC_TIMEFRAME, (DWORD&) m_TimeFrame);
-
- //Disable controls if required
- DisableIfInvalid();
- }
-
-
- BOOL CTimeFramePage::OnInitDialog()
- {
- //Add the strings for the Timeframe combo, ordering is
- //important, the same as the TimeFrame enum
- CComboBox* pTimeFrameCombo = (CComboBox*) GetDlgItem(IDC_TIMEFRAME);
- ASSERT(pTimeFrameCombo);
-
- CString sText;
- BOOL bSuccess;
- int nCurItem = 0;
- if (!(m_dwFlags & DT_NOUCT_TIMEFRAME))
- {
- bSuccess = sText.LoadString(IDS_UCT);
- ASSERT(bSuccess);
- pTimeFrameCombo->AddString(sText);
- pTimeFrameCombo->SetItemData(nCurItem, UCT);
- nCurItem++;
- }
-
- if (!(m_dwFlags & DT_NOET_TIMEFRAME))
- {
- bSuccess = sText.LoadString(IDS_ET);
- ASSERT(bSuccess);
- pTimeFrameCombo->AddString(sText);
- pTimeFrameCombo->SetItemData(nCurItem, ET);
- nCurItem++;
- }
-
- if (!(m_dwFlags & DT_NOLOCAL_TIMEFRAME))
- {
- bSuccess = sText.LoadString(IDS_LOCAL);
- ASSERT(bSuccess);
- pTimeFrameCombo->AddString(sText);
- pTimeFrameCombo->SetItemData(nCurItem, LOCAL);
- nCurItem++;
- }
-
- //Call up to the parent
- return CDatePropertyPage::OnInitDialog();
- }
-
-
- void CTimeFramePage::DisableIfInvalid()
- {
- //if any of these assert then it is likely that the
- //wrong dialog template has been loaded or the
- //correct one could not be found
- ASSERT(GetDlgItem(IDC_TIMEFRAME));
-
- GetDlgItem(IDC_TIMEFRAME)->EnableWindow(!m_bInvalid);
-
- //If there is only one choice for the timeframe, disable the timeframe combo
- CComboBox* pTimeFrameCombo = (CComboBox*) GetDlgItem(IDC_TIMEFRAME);
- ASSERT(pTimeFrameCombo);
-
- if (pTimeFrameCombo->GetCount() == 1)
- GetDlgItem(IDC_TIMEFRAME)->EnableWindow(FALSE);
- }
-
-
- BOOL CTimeFramePage::OnSetActive()
- {
- BOOL rVal = CDatePropertyPage::OnSetActive();
-
- //inform the sheet of the change
- CWnd* pWnd = GetParent();
- ASSERT(pWnd);
- pWnd->PostMessage(UWM_TIMEFRAME_NOTIFY);
-
- return rVal;
- }
-
-
-
-
-
-
-
-
-
- //////////////////////// CCDateSheet implementation ///////////////////////////
-
- IMPLEMENT_DYNAMIC(CCDateSheet, CDatePropertySheet)
-
- BEGIN_MESSAGE_MAP(CCDateSheet, CDatePropertySheet)
- //{{AFX_MSG_MAP(CCDateSheet)
- ON_COMMAND(ID_DOM, OnDOMFormat)
- ON_COMMAND(ID_DOY, OnDOYFormat)
- ON_COMMAND(ID_WOM, OnWOMFormat)
- ON_COMMAND(ID_WOY, OnWOYFormat)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CCDateSheet::CCDateSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage, DWORD dwFlags)
- :CDatePropertySheet(nIDCaption, pParentWnd, iSelectPage, dwFlags)
- {
- AddPage(&m_DOMPage);
- m_DOMPage.SetFlags(dwFlags);
- m_DOYPage.SetFlags(dwFlags);
- m_WOMPage.SetFlags(dwFlags);
- m_WOYPage.SetFlags(dwFlags);
- m_DateCurrPage = DOMPage;
- }
-
-
- CCDateSheet::CCDateSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage, DWORD dwFlags)
- :CDatePropertySheet(pszCaption, pParentWnd, iSelectPage, dwFlags)
- {
- AddPage(&m_DOMPage);
- m_DOMPage.SetFlags(dwFlags);
- m_DOYPage.SetFlags(dwFlags);
- m_WOMPage.SetFlags(dwFlags);
- m_WOYPage.SetFlags(dwFlags);
- m_DateCurrPage = DOMPage;
- }
-
-
- CCDateSheet::~CCDateSheet()
- {
- }
-
-
- void CCDateSheet::SetCDate(const CDate& date)
- {
- m_DOMPage.SetDate(date);
- m_WOMPage.SetDate(date);
- m_WOYPage.SetDate(date);
- m_DOYPage.SetDate(date);
- }
-
-
- void CCDateSheet::OnDOMFormat()
- {
- BOOL bUpdateOk;
- switch (m_DateCurrPage)
- {
- case DOYPage: bUpdateOk = m_DOYPage.UpdateData(); break;
- case WOMPage: bUpdateOk = m_WOMPage.UpdateData(); break;
- case WOYPage: bUpdateOk = m_WOYPage.UpdateData(); break;
- default: return; break;
- }
-
- if (bUpdateOk)
- {
- SetRedraw(FALSE);
- AddPage(&m_DOMPage);
- switch (m_DateCurrPage)
- {
- case DOYPage: m_DOMPage.SetDate(m_DOYPage.GetDate()); RemovePage(&m_DOYPage); break;
- case WOMPage: m_DOMPage.SetDate(m_WOMPage.GetDate()); RemovePage(&m_WOMPage); break;
- case WOYPage: m_DOMPage.SetDate(m_WOYPage.GetDate()); RemovePage(&m_WOYPage); break;
- default: ASSERT(FALSE); break;
- }
- m_DateCurrPage = DOMPage;
- SetRedraw(TRUE);
- Invalidate();
- }
-
- }
-
-
- void CCDateSheet::OnDOYFormat()
- {
- BOOL bUpdateOk;
- switch (m_DateCurrPage)
- {
- case DOMPage: bUpdateOk = m_DOMPage.UpdateData(); break;
- case WOMPage: bUpdateOk = m_WOMPage.UpdateData(); break;
- case WOYPage: bUpdateOk = m_WOYPage.UpdateData(); break;
- default: return; break;
- }
-
- if (bUpdateOk)
- {
- SetRedraw(FALSE);
- AddPage(&m_DOYPage);
- switch (m_DateCurrPage)
- {
- case DOMPage: m_DOYPage.SetDate(m_DOMPage.GetDate()); RemovePage(&m_DOMPage); break;
- case WOMPage: m_DOYPage.SetDate(m_WOMPage.GetDate()); RemovePage(&m_WOMPage); break;
- case WOYPage: m_DOYPage.SetDate(m_WOYPage.GetDate()); RemovePage(&m_WOYPage); break;
- default: ASSERT(FALSE); break;
- }
- m_DateCurrPage = DOYPage;
- SetRedraw(TRUE);
- Invalidate();
- }
- }
-
-
- void CCDateSheet::OnWOMFormat()
- {
- BOOL bUpdateOk;
- switch (m_DateCurrPage)
- {
- case DOMPage: bUpdateOk = m_DOMPage.UpdateData(); break;
- case DOYPage: bUpdateOk = m_DOYPage.UpdateData(); break;
- case WOYPage: bUpdateOk = m_WOYPage.UpdateData(); break;
- default: return; break;
- }
-
- if (bUpdateOk)
- {
- SetRedraw(FALSE);
- AddPage(&m_WOMPage);
- switch (m_DateCurrPage)
- {
- case DOMPage: m_WOMPage.SetDate(m_DOMPage.GetDate()); RemovePage(&m_DOMPage); break;
- case DOYPage: m_WOMPage.SetDate(m_DOYPage.GetDate()); RemovePage(&m_DOYPage); break;
- case WOYPage: m_WOMPage.SetDate(m_WOYPage.GetDate()); RemovePage(&m_WOYPage); break;
- default: ASSERT(FALSE); break;
- }
- m_DateCurrPage = WOMPage;
- SetRedraw(TRUE);
- Invalidate();
- }
- }
-
-
- void CCDateSheet::OnWOYFormat()
- {
- BOOL bUpdateOk;
- switch (m_DateCurrPage)
- {
- case DOMPage: bUpdateOk = m_DOMPage.UpdateData(); break;
- case WOMPage: bUpdateOk = m_WOMPage.UpdateData(); break;
- case DOYPage: bUpdateOk = m_DOYPage.UpdateData(); break;
- default: return; break;
- }
-
- if (bUpdateOk)
- {
- SetRedraw(FALSE);
- AddPage(&m_WOYPage);
- switch (m_DateCurrPage)
- {
- case DOMPage: m_WOYPage.SetDate(m_DOMPage.GetDate()); RemovePage(&m_DOMPage); break;
- case WOMPage: m_WOYPage.SetDate(m_WOMPage.GetDate()); RemovePage(&m_WOMPage); break;
- case DOYPage: m_WOYPage.SetDate(m_DOYPage.GetDate()); RemovePage(&m_DOYPage); break;
- default: ASSERT(FALSE); break;
- }
- m_DateCurrPage = WOYPage;
- SetRedraw(TRUE);
- Invalidate();
- }
- }
-
-
- CDate CCDateSheet::GetCDate() const
- {
- CDate rVal;
-
- switch (m_DateCurrPage)
- {
- case DOMPage: rVal = m_DOMPage.GetDate(); break;
- case DOYPage: rVal = m_DOYPage.GetDate(); break;
- case WOMPage: rVal = m_WOMPage.GetDate(); break;
- case WOYPage: rVal = m_WOYPage.GetDate(); break;
- default: ASSERT(FALSE); break;
- }
-
- return rVal;
- }
-
-
-
-
-
-
-
-
-
- //////////////////////// CCLDateSheet implementation //////////////////////////
-
-
- IMPLEMENT_DYNAMIC(CCLDateSheet, CDatePropertySheet)
-
- BEGIN_MESSAGE_MAP(CCLDateSheet, CDatePropertySheet)
- //{{AFX_MSG_MAP(CCLDateSheet)
- ON_COMMAND(ID_DOM, OnDOMFormat)
- ON_COMMAND(ID_DOY, OnDOYFormat)
- ON_COMMAND(ID_WOM, OnWOMFormat)
- ON_COMMAND(ID_WOY, OnWOYFormat)
- //}}AFX_MSG_MAP
- ON_MESSAGE(UWM_TIMEOFDAY_NOTIFY, OnTimeOfDayNotify)
- ON_MESSAGE(UWM_TIMEFRAME_NOTIFY, OnTimeFrameNotify)
- END_MESSAGE_MAP()
-
-
-
- CCLDateSheet::CCLDateSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage, DWORD dwFlags)
- :CDatePropertySheet(nIDCaption, pParentWnd, iSelectPage, dwFlags)
- {
- AddPage(&m_DOMPage);
- m_DOMPage.SetFlags(dwFlags);
- m_DOYPage.SetFlags(dwFlags);
- m_WOMPage.SetFlags(dwFlags);
- m_WOYPage.SetFlags(dwFlags);
- AddPage(&m_HMSMPage);
- m_HMSMPage.SetFlags(dwFlags);
-
- if (!((m_dwFlags & DT_NOET_TIMEFRAME) &&
- (m_dwFlags & DT_NOUCT_TIMEFRAME) &&
- (m_dwFlags & DT_NOLOCAL_TIMEFRAME)))
- {
- AddPage(&m_TimeFramePage);
- m_TimeFramePage.SetFlags(dwFlags);
- }
-
- m_DateCurrPage = DOMPage;
- m_HMSMPage.SetShowInvalidCheck(FALSE);
- }
-
-
- CCLDateSheet::CCLDateSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage, DWORD dwFlags)
- :CDatePropertySheet(pszCaption, pParentWnd, iSelectPage, dwFlags)
- {
- AddPage(&m_DOMPage);
- m_DOMPage.SetFlags(dwFlags);
- m_DOYPage.SetFlags(dwFlags);
- m_WOMPage.SetFlags(dwFlags);
- m_WOYPage.SetFlags(dwFlags);
- AddPage(&m_HMSMPage);
- m_HMSMPage.SetFlags(dwFlags);
- AddPage(&m_TimeFramePage);
- m_TimeFramePage.SetFlags(dwFlags);
-
- m_DateCurrPage = DOMPage;
- m_HMSMPage.SetShowInvalidCheck(FALSE);
- }
-
-
- CCLDateSheet::~CCLDateSheet()
- {
- }
-
-
- LRESULT CCLDateSheet::OnTimeOfDayNotify(WPARAM /*wParam*/, LPARAM /*lParam*/)
- {
- BOOL bPrevInvalid;
- switch (m_DateCurrPage)
- {
- case DOMPage: bPrevInvalid = !m_DOMPage.GetDate().IsValid(); break;
- case DOYPage: bPrevInvalid = !m_DOYPage.GetDate().IsValid(); break;
- case WOMPage: bPrevInvalid = !m_WOMPage.GetDate().IsValid(); break;
- case WOYPage: bPrevInvalid = !m_WOYPage.GetDate().IsValid(); break;
- default: ASSERT(FALSE); break;
- }
-
- if (bPrevInvalid)
- m_HMSMPage.SetTimeOfDay(CLTimeOfDay());
- else
- m_HMSMPage.MarkAsValid();
- m_HMSMPage.UpdateData(FALSE);
-
- return 0L;
- }
-
-
- LRESULT CCLDateSheet::OnTimeFrameNotify(WPARAM /*wParam*/, LPARAM /*lParam*/)
- {
- BOOL bPrevInvalid;
- switch (m_DateCurrPage)
- {
- case DOMPage: bPrevInvalid = !m_DOMPage.GetDate().IsValid(); break;
- case DOYPage: bPrevInvalid = !m_DOYPage.GetDate().IsValid(); break;
- case WOMPage: bPrevInvalid = !m_WOMPage.GetDate().IsValid(); break;
- case WOYPage: bPrevInvalid = !m_WOYPage.GetDate().IsValid(); break;
- default: ASSERT(FALSE); break;
- }
-
- m_TimeFramePage.SetInvalid(bPrevInvalid);
- m_TimeFramePage.UpdateData(FALSE);
-
- return 0L;
- }
-
-
- CLDate CCLDateSheet::GetCLDate() const
- {
- CDate date;
- switch (m_DateCurrPage)
- {
- case DOMPage: date = m_DOMPage.GetDate(); break;
- case DOYPage: date = m_DOYPage.GetDate(); break;
- case WOMPage: date = m_WOMPage.GetDate(); break;
- case WOYPage: date = m_WOYPage.GetDate(); break;
- default: ASSERT(FALSE); break;
- }
-
- TimeFrame tf = m_TimeFramePage.GetTimeFrame();
- CLTimeOfDay Tod = m_HMSMPage.GetTimeOfDay();
- return CLDate(date, Tod, tf);
- }
-
-
- void CCLDateSheet::SetCLDate(const CLDate& date)
- {
- m_DOMPage.SetDate(date.GetCDate());
- m_WOMPage.SetDate(date.GetCDate());
- m_WOYPage.SetDate(date.GetCDate());
- m_DOYPage.SetDate(date.GetCDate());
- m_HMSMPage.SetTimeOfDay(date.GetCLTimeOfDay());
- if (date.IsValid())
- m_TimeFramePage.SetTimeFrame(date.GetTimeFrame());
- else
- m_TimeFramePage.SetTimeFrame(UCT);
- }
-
-
- void CCLDateSheet::OnDOMFormat()
- {
- BOOL bUpdateOk;
- switch (m_DateCurrPage)
- {
- case DOYPage: bUpdateOk = m_DOYPage.UpdateData(); break;
- case WOMPage: bUpdateOk = m_WOMPage.UpdateData(); break;
- case WOYPage: bUpdateOk = m_WOYPage.UpdateData(); break;
- default: return; break;
- }
-
- if (bUpdateOk)
- {
- SetRedraw(FALSE);
- RemovePage(&m_HMSMPage);
- RemovePage(&m_TimeFramePage);
- AddPage(&m_DOMPage);
- AddPage(&m_HMSMPage);
- AddPage(&m_TimeFramePage);
- switch (m_DateCurrPage)
- {
- case DOYPage: m_DOMPage.SetDate(m_DOYPage.GetDate()); RemovePage(&m_DOYPage); break;
- case WOMPage: m_DOMPage.SetDate(m_WOMPage.GetDate()); RemovePage(&m_WOMPage); break;
- case WOYPage: m_DOMPage.SetDate(m_WOYPage.GetDate()); RemovePage(&m_WOYPage); break;
- default: ASSERT(FALSE); break;
- }
- m_DateCurrPage = DOMPage;
- SetRedraw(TRUE);
- Invalidate();
- }
- }
-
-
- void CCLDateSheet::OnDOYFormat()
- {
- BOOL bUpdateOk;
- switch (m_DateCurrPage)
- {
- case DOMPage: bUpdateOk = m_DOMPage.UpdateData(); break;
- case WOMPage: bUpdateOk = m_WOMPage.UpdateData(); break;
- case WOYPage: bUpdateOk = m_WOYPage.UpdateData(); break;
- default: return; break;
- }
-
- if (bUpdateOk)
- {
- SetRedraw(FALSE);
- RemovePage(&m_HMSMPage);
- RemovePage(&m_TimeFramePage);
- AddPage(&m_DOYPage);
- AddPage(&m_HMSMPage);
- AddPage(&m_TimeFramePage);
- switch (m_DateCurrPage)
- {
- case DOMPage: m_DOYPage.SetDate(m_DOMPage.GetDate()); RemovePage(&m_DOMPage); break;
- case WOMPage: m_DOYPage.SetDate(m_WOMPage.GetDate()); RemovePage(&m_WOMPage); break;
- case WOYPage: m_DOYPage.SetDate(m_WOYPage.GetDate()); RemovePage(&m_WOYPage); break;
- default: ASSERT(FALSE); break;
- }
- m_DateCurrPage = DOYPage;
- SetRedraw(TRUE);
- Invalidate();
- }
- }
-
-
- void CCLDateSheet::OnWOMFormat()
- {
- BOOL bUpdateOk;
- switch (m_DateCurrPage)
- {
- case DOMPage: bUpdateOk = m_DOMPage.UpdateData(); break;
- case DOYPage: bUpdateOk = m_DOYPage.UpdateData(); break;
- case WOYPage: bUpdateOk = m_WOYPage.UpdateData(); break;
- default: return; break;
- }
-
- if (bUpdateOk)
- {
- SetRedraw(FALSE);
- RemovePage(&m_HMSMPage);
- RemovePage(&m_TimeFramePage);
- AddPage(&m_WOMPage);
- AddPage(&m_HMSMPage);
- AddPage(&m_TimeFramePage);
- switch (m_DateCurrPage)
- {
- case DOMPage: m_WOMPage.SetDate(m_DOMPage.GetDate()); RemovePage(&m_DOMPage); break;
- case DOYPage: m_WOMPage.SetDate(m_DOYPage.GetDate()); RemovePage(&m_DOYPage); break;
- case WOYPage: m_WOMPage.SetDate(m_WOYPage.GetDate()); RemovePage(&m_WOYPage); break;
- default: ASSERT(FALSE); break;
- }
- m_DateCurrPage = WOMPage;
- SetRedraw(TRUE);
- Invalidate();
- }
- }
-
-
- void CCLDateSheet::OnWOYFormat()
- {
- BOOL bUpdateOk;
- switch (m_DateCurrPage)
- {
- case DOMPage: bUpdateOk = m_DOMPage.UpdateData(); break;
- case WOMPage: bUpdateOk = m_WOMPage.UpdateData(); break;
- case DOYPage: bUpdateOk = m_DOYPage.UpdateData(); break;
- default: return; break;
- }
-
- if (bUpdateOk)
- {
- SetRedraw(FALSE);
- RemovePage(&m_HMSMPage);
- RemovePage(&m_TimeFramePage);
- AddPage(&m_WOYPage);
- AddPage(&m_HMSMPage);
- AddPage(&m_TimeFramePage);
- switch (m_DateCurrPage)
- {
- case DOMPage: m_WOYPage.SetDate(m_DOMPage.GetDate()); RemovePage(&m_DOMPage); break;
- case WOMPage: m_WOYPage.SetDate(m_WOMPage.GetDate()); RemovePage(&m_WOMPage); break;
- case DOYPage: m_WOYPage.SetDate(m_DOYPage.GetDate()); RemovePage(&m_DOYPage); break;
- default: ASSERT(FALSE); break;
- }
- m_DateCurrPage = WOYPage;
- SetRedraw(TRUE);
- Invalidate();
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- //////////////////////// CCLTimeOfDaySheet implementation /////////////////////
-
- IMPLEMENT_DYNAMIC(CCLTimeOfDaySheet, CDatePropertySheet)
-
- BEGIN_MESSAGE_MAP(CCLTimeOfDaySheet, CDatePropertySheet)
- //{{AFX_MSG_MAP(CCLTimeOfDaySheet)
- //}}AFX_MSG_MAP
- ON_MESSAGE(UWM_TIMEOFDAY_NOTIFY, OnTimeOfDayNotify)
- END_MESSAGE_MAP()
-
-
- CCLTimeOfDaySheet::CCLTimeOfDaySheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage, DWORD dwFlags)
- :CDatePropertySheet(nIDCaption, pParentWnd, iSelectPage, dwFlags)
- {
- AddPage(&m_HMSMPage);
- m_HMSMPage.SetFlags(dwFlags);
- }
-
-
- CCLTimeOfDaySheet::CCLTimeOfDaySheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage, DWORD dwFlags)
- :CDatePropertySheet(pszCaption, pParentWnd, iSelectPage, dwFlags)
- {
- AddPage(&m_HMSMPage);
- m_HMSMPage.SetFlags(dwFlags);
- }
-
-
- CCLTimeOfDaySheet::~CCLTimeOfDaySheet()
- {
- }
-
-
- void CCLTimeOfDaySheet::SetCLTimeOfDay(const CLTimeOfDay& Tod)
- {
- m_HMSMPage.SetTimeOfDay(Tod);
- }
-
-
- LRESULT CCLTimeOfDaySheet::OnTimeOfDayNotify(WPARAM /*wParam*/, LPARAM /*lParam*/)
- {
- return 0L;
- }
-
-
-
-
-
-
-
-
-
-
- //////////////////////// CCLTimeSpanSheet implementation //////////////////////
-
- IMPLEMENT_DYNAMIC(CCLTimeSpanSheet, CDatePropertySheet)
-
- BEGIN_MESSAGE_MAP(CCLTimeSpanSheet, CDatePropertySheet)
- //{{AFX_MSG_MAP(CCLTimeSpanSheet)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CCLTimeSpanSheet::CCLTimeSpanSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage, DWORD dwFlags)
- :CDatePropertySheet(nIDCaption, pParentWnd, iSelectPage, dwFlags)
- {
- AddPage(&m_DHMSMPage);
- m_DHMSMPage.SetFlags(dwFlags);
- }
-
-
- CCLTimeSpanSheet::CCLTimeSpanSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage, DWORD dwFlags)
- :CDatePropertySheet(pszCaption, pParentWnd, iSelectPage, dwFlags)
- {
- AddPage(&m_DHMSMPage);
- m_DHMSMPage.SetFlags(dwFlags);
- }
-
-
- CCLTimeSpanSheet::~CCLTimeSpanSheet()
- {
- }
-
-
- void CCLTimeSpanSheet::SetCLTimeSpan(const CLTimeSpan& Ts)
- {
- m_DHMSMPage.SetTimeSpan(Ts);
- }
-
-
-
-
-
-
-
-
-
-
-
- //////////////////////// CDateButton implementation ///////////////////////////
-
- BEGIN_MESSAGE_MAP(CDateButton, CButton)
- //{{AFX_MSG_MAP(CDateButton)
- ON_CONTROL_REFLECT(BN_CLICKED, OnClicked)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CDateButton::CDateButton()
- {
- m_pBuddy = NULL;
- m_bFirstCall = TRUE;
- }
-
-
- CDateButton::~CDateButton()
- {
- }
-
-
- void CDateButton::SetBuddy(CWnd* pBuddy)
- {
- m_pBuddy = pBuddy;
- }
-
-
- BOOL CDateButton::PreTranslateMessage(MSG* pMsg)
- {
- //create the tooltip
- if (m_bFirstCall)
- {
- m_ToolTip.Create(this);
- m_ToolTip.Activate(TRUE);
- m_ToolTip.AddTool(this, IDS_TT_MODIFY);
- m_bFirstCall = FALSE;
- }
-
- //give the tooltip a chance to handle the message
- m_ToolTip.RelayEvent(pMsg);
-
- return CButton::PreTranslateMessage(pMsg);
- }
-
-
- void CDateButton::OnClicked()
- {
- if (m_pBuddy)
- m_pBuddy->PostMessage(UWM_BN_CLICKED);
- else
- TRACE0("CDateButton: No auto buddy defined\n");
- }
-
-
-
-
-
-
-
-
- //////////////////////// CDateTimeControl implementation //////////////////////
-
-
- BEGIN_MESSAGE_MAP(CDateTimeControl, CStatic)
- //{{AFX_MSG_MAP(CDateTimeControl)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CDateTimeControl::CDateTimeControl()
- {
- m_bSubclassed = FALSE;
- }
-
-
- CDateTimeControl::~CDateTimeControl()
- {
- }
-
-
- BOOL CDateTimeControl::SubclassEdit(UINT iCtlID, CWnd* pParentWnd)
- {
- //test our inputs
- ASSERT(this);
- if (!iCtlID || ! pParentWnd)
- {
- ASSERT(FALSE);
- TRACE0("CDateTimeControl::SubclassEdit -- Control iD or parent window class is invalid!\n");
- return FALSE;
- }
-
- //this can only work if it's on a form view or dialog
- if (pParentWnd->IsKindOf(RUNTIME_CLASS(CFormView)) ||
- pParentWnd->IsKindOf(RUNTIME_CLASS(CDialog)))
- {
- //subclass the control
- if (SubclassDlgItem(iCtlID, pParentWnd))
- {
- m_bSubclassed = TRUE;
-
- //This control can only be used with a read only edit control
- LONG lStyle = GetWindowLong(GetSafeHwnd(), GWL_STYLE);
- if (!(lStyle & ES_READONLY))
- {
- TRACE0("CDateTimeControl::SubclassEdit -- ES_READONLY style should be set for the edit control\n");
- ASSERT(FALSE);
- return FALSE;
- }
-
- return AddEditButton();
- }
- else
- {
- TRACE0("CDateTimeControl::SubclassEdit -- Could not subclass edit control!\n");
- ASSERT(FALSE);
- return FALSE;
- }
- }
- else //parent is not of CDialog or CFormView class
- {
- TRACE0("CDateTimeControl::SubclassEdit -- Parent class is not a CFormView or CDialog!\n");
- return FALSE;
- }
- }
-
-
- BOOL CDateTimeControl::SubclassEdit(HWND hEdit)
- {
- //test our inputs
- ASSERT(this);
- if (!IsWindow(hEdit))
- {
- ASSERT(FALSE);
- TRACE0("CDateTimeControl::SubclassEdit -- window handle is invalid!\n");
- return FALSE;
- }
-
- //subclass the control
- if (SubclassWindow(hEdit))
- {
- m_bSubclassed = TRUE;
-
- //This control can only be used with a read only edit control
- LONG lStyle = GetWindowLong(GetSafeHwnd(), GWL_STYLE);
- if (!(lStyle & ES_READONLY))
- {
- TRACE0("CDateTimeControl::SubclassEdit -- ES_READONLY style should be set for the edit control\n");
- return FALSE;
- }
-
- return AddEditButton();
- }
- else
- {
- TRACE0("CDateTimeControl::SubclassEdit -- Could not subclass static control!\n");
- return FALSE;
- }
- }
-
-
- BOOL CDateTimeControl::AddEditButton()
- {
- CRect Rect;
- GetWindowRect(Rect);
- GetParent()->ScreenToClient(Rect);
- Rect.left = Rect.right;
- Rect.right = Rect.left + (Rect.Height()*8/10); //width is 8/10 of height
-
- //dynamically create the edit control
- CString sEditControlText;
- if (!sEditControlText.LoadString(IDS_EDIT_TEXT))
- ASSERT(FALSE);
- BOOL bSuccess = m_Edit.Create(sEditControlText, WS_VISIBLE | WS_CHILD | WS_GROUP,
- Rect, GetParent(), DTIME_EDIT_CONTROL_ID);
-
- //tell the button to send click notifications to this window
- m_Edit.SetBuddy(this);
-
- //ensure it is using the same font as the parent
- m_Edit.SetFont(GetParent()->GetFont());
-
- return bSuccess;
- }
-
-
-
-
-
-
-
-
-
- //////////////////////// CDateControl implementation //////////////////////////
-
- BEGIN_MESSAGE_MAP(CDateControl, CDateTimeControl)
- //{{AFX_MSG_MAP(CDateControl)
- ON_MESSAGE(UWM_BN_CLICKED, OnEditClick)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CDateControl::CDateControl()
- {
- }
-
-
- CDateControl::~CDateControl()
- {
- }
-
-
- LRESULT CDateControl::OnEditClick(WPARAM /*wParam*/, LPARAM /*lParam*/)
- {
- CCDateSheet dlg(IDS_ENTER_CDATE, NULL, 0, m_dwFlags);
- dlg.SetCDate(m_Value);
- if (dlg.DoModal() == IDOK)
- SetValue(dlg.GetCDate());
-
- return 0;
- }
-
-
- void CDateControl::SetValue(const CDate& value)
- {
- m_Value = value;
- SetWindowText(m_Value.Format());
- }
-
-
-
-
-
-
-
- //////////////////////// CCLTimeSpanControl implementation ////////////////////
-
- BEGIN_MESSAGE_MAP(CLTimeSpanControl, CDateTimeControl)
- //{{AFX_MSG_MAP(CLTimeSpanControl)
- ON_MESSAGE(UWM_BN_CLICKED, OnEditClick)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CLTimeSpanControl::CLTimeSpanControl()
- {
- }
-
-
- CLTimeSpanControl::~CLTimeSpanControl()
- {
- }
-
-
- LRESULT CLTimeSpanControl::OnEditClick(WPARAM /*wParam*/, LPARAM /*lParam*/)
- {
- CCLTimeSpanSheet dlg(IDS_ENTER_CLTIMESPAN, NULL, 0, m_dwFlags);
- dlg.SetCLTimeSpan(m_Value);
- if (dlg.DoModal() == IDOK)
- SetValue(dlg.GetCLTimeSpan());
-
- return 0;
- }
-
-
- void CLTimeSpanControl::SetValue(const CLTimeSpan& value)
- {
- m_Value = value;
-
- if (m_dwFlags & DT_NOSECONDS)
- SetWindowText(m_Value.Format(DTF_NOSECOND));
- else
- SetWindowText(m_Value.Format());
- }
-
-
-
-
-
-
- //////////////////////// CCLTimeOfDayControl implementation ///////////////////
-
- BEGIN_MESSAGE_MAP(CLTimeOfDayControl, CDateTimeControl)
- //{{AFX_MSG_MAP(CLTimeOfDayControl)
- ON_MESSAGE(UWM_BN_CLICKED, OnEditClick)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CLTimeOfDayControl::CLTimeOfDayControl()
- {
- }
-
-
- CLTimeOfDayControl::~CLTimeOfDayControl()
- {
- }
-
-
- LRESULT CLTimeOfDayControl::OnEditClick(WPARAM /*wParam*/, LPARAM /*lParam*/)
- {
- CCLTimeOfDaySheet dlg(IDS_ENTER_CLTIMEOFDAY, NULL, 0, m_dwFlags);
- dlg.SetCLTimeOfDay(m_Value);
- if (dlg.DoModal() == IDOK)
- SetValue(dlg.GetCLTimeOfDay());
-
- return 0;
- }
-
-
- void CLTimeOfDayControl::SetValue(const CLTimeOfDay& value)
- {
- m_Value = value;
-
- if (m_dwFlags & DT_NOSECONDS)
- SetWindowText(m_Value.Format(DTF_NOSECOND));
- else
- SetWindowText(m_Value.Format());
- }
-
-
-
-
-
-
- //////////////////////// CCLDateControl implementation ////////////////////////
-
- BEGIN_MESSAGE_MAP(CLDateControl, CDateTimeControl)
- //{{AFX_MSG_MAP(CLDateControl)
- ON_MESSAGE(UWM_BN_CLICKED, OnEditClick)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CLDateControl::CLDateControl()
- {
- }
-
-
- CLDateControl::~CLDateControl()
- {
- }
-
-
- LRESULT CLDateControl::OnEditClick(WPARAM /*wParam*/, LPARAM /*lParam*/)
- {
- CCLDateSheet dlg(IDS_ENTER_CLDATE, NULL, 0, m_dwFlags);
- dlg.SetCLDate(m_Value);
- if (dlg.DoModal() == IDOK)
- SetValue(dlg.GetCLDate());
-
- return 0;
- }
-
-
- void CLDateControl::SetValue(const CLDate& value)
- {
- m_Value = value;
-
- DWORD dwFlags = 0;
- if (m_dwFlags & DT_NOSECONDS)
- dwFlags |= DTF_NOSECOND;
-
- if ((m_dwFlags & DT_NOET_TIMEFRAME) &&
- (m_dwFlags & DT_NOUCT_TIMEFRAME) &&
- (m_dwFlags & DT_NOLOCAL_TIMEFRAME))
- dwFlags |= DTF_NOTIMEFRAME;
-
-
- //If the Timeframe of the value being set
- //is not allowed to be displayed then convert
- //the value to the allowable timeframe
- TimeFrame tf = m_Value.GetTimeFrame();
-
- if (tf == UCT)
- {
- if (m_dwFlags & DT_NOUCT_TIMEFRAME)
- {
- if (!(m_dwFlags & DT_NOLOCAL_TIMEFRAME))
- {
- TRACE0("Forced to modify timeframe of a CLDate to LOCAL during CLDateControl::SetValue!\n");
- m_Value.SetTimeFrame(LOCAL);
- }
- else if (!(m_dwFlags & DT_NOET_TIMEFRAME))
- {
- TRACE0("Forced to modify timeframe of a CLDate to ET during CLDateControl::SetValue!\n");
- m_Value.SetTimeFrame(ET);
- }
- }
- }
- else if (tf == LOCAL)
- {
- if (m_dwFlags & DT_NOLOCAL_TIMEFRAME)
- {
- if (!(m_dwFlags & DT_NOUCT_TIMEFRAME))
- {
- TRACE0("Forced to modify timeframe of a CLDate to UCT during CLDateControl::SetValue!\n");
- m_Value.SetTimeFrame(UCT);
- }
- else if (!(m_dwFlags & DT_NOET_TIMEFRAME))
- {
- TRACE0("Forced to modify timeframe of a CLDate to ET during CLDateControl::SetValue!\n");
- m_Value.SetTimeFrame(ET);
- }
- }
- }
- else if (tf == ET)
- {
- if (m_dwFlags & DT_NOET_TIMEFRAME)
- {
- if (!(m_dwFlags & DT_NOUCT_TIMEFRAME))
- {
- TRACE0("Forced to modify timeframe of a CLDate to UCT during CLDateControl::SetValue!\n");
- m_Value.SetTimeFrame(UCT);
- }
- else if (!(m_dwFlags & DT_NOLOCAL_TIMEFRAME))
- {
- TRACE0("Forced to modify timeframe of a CLDate to LOCAL during CLDateControl::SetValue!\n");
- m_Value.SetTimeFrame(LOCAL);
- }
- }
- }
-
- SetWindowText(m_Value.Format(dwFlags));
- }
-
-
-
-
-
-
-
-
- //////////////////////// CDTimeReminderDlg implementation /////////////////////
-
- BEGIN_MESSAGE_MAP(CDTimeReminderDlg, CDialog)
- //{{AFX_MSG_MAP(CDTimeReminderDlg)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- CDTimeReminderDlg::CDTimeReminderDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CDTimeReminderDlg::IDD, pParent)
- {
- //{{AFX_DATA_INIT(CDTimeReminderDlg)
- //}}AFX_DATA_INIT
- }
-
-
- void CDTimeReminderDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CDTimeReminderDlg)
- //}}AFX_DATA_MAP
- }
-
-
- BOOL CDTimeReminderDlg::OnInitDialog()
- {
- BOOL rVal = CDialog::OnInitDialog();
-
- WORD wDTimeVer = GetDTimeVersion();
- CString sVer;
- sVer.Format(_T("%d.%02d"), HIBYTE(wDTimeVer), LOBYTE(wDTimeVer));
-
- CString sVersionString;
- AfxFormatString1(sVersionString, IDS_SHAREWARE_CAPTION, sVer);
-
- SetDlgItemText(IDC_VERSION, sVersionString);
-
- return rVal;
- }
-
-
-
-
-
-
-
- //////////////////////// Free subprogram implementation ///////////////////////
-
- void DDX_CDateControl(CDataExchange* pDX, int nIDC, CDateControl& rCDateControl, DWORD dwFlags)
- {
- HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
- if (!pDX->m_bSaveAndValidate && rCDateControl.m_hWnd == NULL) // not subclassed yet
- {
- if (!rCDateControl.SubclassEdit(hWndCtrl))
- {
- ASSERT(FALSE); // possibly trying to subclass twice ?
- AfxThrowNotSupportedException();
- }
- }
- rCDateControl.SetFlags(dwFlags);
- }
-
-
- void DDX_CLTimeSpanControl(CDataExchange* pDX, int nIDC, CLTimeSpanControl& rCLTimeSpanControl, DWORD dwFlags)
- {
- HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
- if (!pDX->m_bSaveAndValidate && rCLTimeSpanControl.m_hWnd == NULL) // not subclassed yet
- {
- if (!rCLTimeSpanControl.SubclassEdit(hWndCtrl))
- {
- ASSERT(FALSE); // possibly trying to subclass twice ?
- AfxThrowNotSupportedException();
- }
- }
- rCLTimeSpanControl.SetFlags(dwFlags);
- }
-
-
- void DDX_CLTimeOfDayControl(CDataExchange* pDX, int nIDC, CLTimeOfDayControl& rCLTimeOfDayControl, DWORD dwFlags)
- {
- HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
- if (!pDX->m_bSaveAndValidate && rCLTimeOfDayControl.m_hWnd == NULL) // not subclassed yet
- {
- if (!rCLTimeOfDayControl.SubclassEdit(hWndCtrl))
- {
- ASSERT(FALSE); // possibly trying to subclass twice ?
- AfxThrowNotSupportedException();
- }
- }
- rCLTimeOfDayControl.SetFlags(dwFlags);
- }
-
-
- void DDX_CLDateControl(CDataExchange* pDX, int nIDC, CLDateControl& rCLDateControl, DWORD dwFlags)
- {
- HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
- if (!pDX->m_bSaveAndValidate && rCLDateControl.m_hWnd == NULL) // not subclassed yet
- {
- if (!rCLDateControl.SubclassEdit(hWndCtrl))
- {
- ASSERT(FALSE); // possibly trying to subclass twice ?
- AfxThrowNotSupportedException();
- }
- }
- rCLDateControl.SetFlags(dwFlags);
- }
-
-
- void DDX_CDate(CDataExchange* pDX, CDateControl& rCDateStatic, CDate& value)
- {
- if (rCDateStatic.m_hWnd != NULL)
- {
- if (pDX->m_bSaveAndValidate)
- {
- rCDateStatic.GetValue(value);
- }
- else
- {
- rCDateStatic.SetValue(value);
- }
- }
- }
-
-
- void DDX_CLTimeSpan(CDataExchange* pDX, CLTimeSpanControl& rCLTimeSpanControl, CLTimeSpan& value)
- {
- if (rCLTimeSpanControl.m_hWnd != NULL)
- {
- if (pDX->m_bSaveAndValidate)
- {
- rCLTimeSpanControl.GetValue(value);
- }
- else
- {
- rCLTimeSpanControl.SetValue(value);
- }
- }
- }
-
-
- void DDX_CLTimeOfDay(CDataExchange* pDX, CLTimeOfDayControl& rCLTimeOfDayControl, CLTimeOfDay& value)
- {
- if (rCLTimeOfDayControl.m_hWnd != NULL)
- {
- if (pDX->m_bSaveAndValidate)
- {
- rCLTimeOfDayControl.GetValue(value);
- }
- else
- {
- rCLTimeOfDayControl.SetValue(value);
- }
- }
- }
-
-
- void DDX_CLDate(CDataExchange* pDX, CLDateControl& rCLDateControl, CLDate& value)
- {
- if (rCLDateControl.m_hWnd != NULL)
- {
- if (pDX->m_bSaveAndValidate)
- {
- rCLDateControl.GetValue(value);
- }
- else
- {
- rCLDateControl.SetValue(value);
- }
- }
- }
-
-
- void DDV_MinMaxCDate(CDataExchange* pDX, CDate& value, CDate& minVal, CDate& maxVal)
- {
- ASSERT(value.IsValid() && minVal.IsValid() && maxVal.IsValid());
- if (pDX->m_bSaveAndValidate && ((value < minVal) || (value > maxVal)))
- {
- AfxMessageBox(IDS_INVALID_DATE_RANGE, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_DATE_RANGE);
- pDX->Fail();
- }
- }
-
-
- void DDV_GreaterThanCDate(CDataExchange* pDX, CDate& value, CDate& minVal)
- {
- ASSERT(value.IsValid() && minVal.IsValid());
- if (pDX->m_bSaveAndValidate && (value < minVal))
- {
- AfxMessageBox(IDS_INVALID_DATE_MIN, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_DATE_MIN);
- pDX->Fail();
- }
- }
-
-
- void DDV_LessThanCDate(CDataExchange* pDX, CDate& value, CDate& maxVal)
- {
- ASSERT(value.IsValid() && maxVal.IsValid());
- if (pDX->m_bSaveAndValidate && (value > maxVal))
- {
- AfxMessageBox(IDS_INVALID_DATE_MAX, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_DATE_MAX);
- pDX->Fail();
- }
- }
-
-
- void DDV_MinMaxCLTimeSpan(CDataExchange* pDX, CLTimeSpan& value, CLTimeSpan& minVal, CLTimeSpan& maxVal)
- {
- ASSERT(value.IsValid() && minVal.IsValid() && maxVal.IsValid());
- if (pDX->m_bSaveAndValidate && ((value < minVal) || (value > maxVal)))
- {
- AfxMessageBox(IDS_INVALID_TIMESPAN_RANGE, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_TIMESPAN_RANGE);
- pDX->Fail();
- }
- }
-
-
- void DDV_GreaterThanCLTimeSpan(CDataExchange* pDX, CLTimeSpan& value, CLTimeSpan& minVal)
- {
- ASSERT(value.IsValid() && minVal.IsValid());
- if (pDX->m_bSaveAndValidate && (value < minVal))
- {
- AfxMessageBox(IDS_INVALID_TIMESPAN_MIN, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_TIMESPAN_MIN);
- pDX->Fail();
- }
- }
-
-
- void DDV_LessThanCLTimeSpan(CDataExchange* pDX, CLTimeSpan& value, CLTimeSpan& maxVal)
- {
- ASSERT(value.IsValid() && maxVal.IsValid());
- if (pDX->m_bSaveAndValidate && (value > maxVal))
- {
- AfxMessageBox(IDS_INVALID_TIMESPAN_MAX, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_TIMESPAN_MAX);
- pDX->Fail();
- }
- }
-
-
- void DDV_IsValidCLTimeSpan(CDataExchange* pDX, CLTimeSpan& value)
- {
- if (pDX->m_bSaveAndValidate && (!value.IsValid()))
- {
- AfxMessageBox(IDS_INVALID_TIMESPAN, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_TIMESPAN);
- pDX->Fail();
- }
- }
-
-
- void DDV_MinMaxCLTimeOfDay(CDataExchange* pDX, CLTimeOfDay& value, CLTimeOfDay& minVal, CLTimeOfDay& maxVal)
- {
- ASSERT(value.IsValid() && minVal.IsValid() && maxVal.IsValid());
- if (pDX->m_bSaveAndValidate && ((value < minVal) || (value > maxVal)))
- {
- AfxMessageBox(IDS_INVALID_TIMEOFDAY_RANGE, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_TIMEOFDAY_RANGE);
- pDX->Fail();
- }
- }
-
-
- void DDV_GreaterThanCLTimeOfDay(CDataExchange* pDX, CLTimeOfDay& value, CLTimeOfDay& minVal)
- {
- ASSERT(value.IsValid() && minVal.IsValid());
- if (pDX->m_bSaveAndValidate && (value < minVal))
- {
- AfxMessageBox(IDS_INVALID_TIMEOFDAY_MIN, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_TIMEOFDAY_MIN);
- pDX->Fail();
- }
- }
-
-
- void DDV_LessThanCLTimeOfDay(CDataExchange* pDX, CLTimeOfDay& value, CLTimeOfDay& maxVal)
- {
- ASSERT(value.IsValid() && maxVal.IsValid());
- if (pDX->m_bSaveAndValidate && (value > maxVal))
- {
- AfxMessageBox(IDS_INVALID_TIMEOFDAY_MAX, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_TIMEOFDAY_MAX);
- pDX->Fail();
- }
- }
-
-
- void DDV_MinMaxCLDate(CDataExchange* pDX, CLDate& value, CLDate& minVal, CLDate& maxVal)
- {
- ASSERT(value.IsValid() && minVal.IsValid() && maxVal.IsValid());
- if (pDX->m_bSaveAndValidate && ((value < minVal) || (value > maxVal)))
- {
- AfxMessageBox(IDS_INVALID_DATE_RANGE, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_DATE_RANGE);
- pDX->Fail();
- }
- }
-
-
- void DDV_GreaterThanCLDate(CDataExchange* pDX, CLDate& value, CLDate& minVal)
- {
- ASSERT(value.IsValid() && minVal.IsValid());
- if (pDX->m_bSaveAndValidate && (value < minVal))
- {
- AfxMessageBox(IDS_INVALID_LDATE_MIN, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_LDATE_MIN);
- pDX->Fail();
- }
- }
-
-
- void DDV_LessThanCLDate(CDataExchange* pDX, CLDate& value, CLDate& maxVal)
- {
- ASSERT(value.IsValid() && maxVal.IsValid());
- if (pDX->m_bSaveAndValidate && (value > maxVal))
- {
- AfxMessageBox(IDS_INVALID_LDATE_MAX, MB_OK | MB_ICONEXCLAMATION, DT_IDS_INVALID_LDATE_MAX);
- pDX->Fail();
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-