// XTDateTimeCtrl.h interface for the CXTDateTimeCtrl class. // // This file is a part of the XTREME CONTROLS MFC class library. // (c)1998-2012 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// //{{AFX_CODEJOCK_PRIVATE #if !defined(__XTDATETIMECTRL_H__) #define __XTDATETIMECTRL_H__ //}}AFX_CODEJOCK_PRIVATE #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // class forwards class CXTMonthCalCtrl; //=========================================================================== // Summary: // CXTDateTimeCtrl is a CWnd derived class. A CXTDateTimeCtrl object encapsulates // the functionality of a date and time picker control. // Remarks: // The date and time picker control (DTP control) provides a simple interface to exchange // date and time information with a user. This interface contains fields, and // each field displays a part of the date and time information stored // in the control. The user can change the information stored in the control // by changing the content of the string in a given field. The user can // also move from field to field using the mouse or the keyboard. // // You can customize the date and time picker control by applying a variety // of styles to the object when you create it. See Date and Time Picker // Control Styles in the Platform SDK for more information about styles // specific to the date and time picker control. You can set the display // format of the DTP control using format styles. These format styles // are described in Preset DTP Display Formats in the Platform SDK. // // The date and time picker control also uses notifications and callbacks, // which are described in Using CXTDateTimeCtrl in the Xtreme Toolkit online // help. //=========================================================================== class _XTP_EXT_CLASS CXTDateTimeCtrl : public CWnd { DECLARE_DYNAMIC(CXTDateTimeCtrl) public: //----------------------------------------------------------------------- // Summary: // Constructs a CXTDateTimeCtrl object //----------------------------------------------------------------------- CXTDateTimeCtrl(); //----------------------------------------------------------------------- // Summary: // Destroys a CXTDateTimeCtrl object, handles cleanup and deallocation //----------------------------------------------------------------------- virtual ~CXTDateTimeCtrl(); public: //----------------------------------------------------------------------- // Summary: // This member function creates the date and time picker control and // attaches it to the CXTDateTimeCtrl object. // Parameters: // dwStyle - Specifies the combination of date time control // styles. See Date and Time Picker Control Styles // in the Platform SDK for more information about // date and time picker styles. // rect - A reference to a RECT structure, which is the // position and size of the date and time picker control. // pParentWnd - A pointer to a CWnd object that is the parent // window of the date and time picker control. It // must not be NULL. // nID - Specifies the control ID of the date and time picker // control. // Returns: // Nonzero if creation was successful, otherwise returns 0. //----------------------------------------------------------------------- BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); //----------------------------------------------------------------------- // Summary: // This member function retrieves the color for a given portion of // the month calendar within the date and time picker control. // Parameters: // iColor - An int value specifying which color area of the month // calendar to retrieve. For a list of values, see the // 'iColor' parameter for SetMonthCalColor. // Returns: // A COLORREF value that represents the color setting for the specified // portion of the month calendar control if successful. The function // returns -1 if unsuccessful. //----------------------------------------------------------------------- COLORREF GetMonthCalColor(int iColor) const; // ------------------------------------------------------------------------------ // Summary: // This member function sets the color for a given portion of the // month calendar within a date and time picker control. // Parameters: // iColor - An int value specifying which area of the month calendar control // to set. This value can be one of the values listed in the // \remarks section. // ref - A RGB value representing the color that will be set for the // specified area of the month calendar. // Remarks: // The area of the calendar control that the color is to be set for // can be one of the following values: // * MCSC_BACKGROUND Set the background color displayed between // months. // * MCSC_MONTHBK Set the background color displayed within // a month. // * MCSC_TEXT Set the color used to display text within a // month. // * MCSC_TITLEBK Set the background color displayed in // the calendar's title. // * MCSC_TITLETEXT Set the color used to display text within // the calendar's title. // * MCSC_TRAILINGTEXT Set the color used to display header // and trailing-day text. Header and trailing days are the days from // the previous and following months that appear on the current // calendar. // Returns: // A COLORREF value that represents the previous color setting for // the specified portion of the month calendar control if successful. // Otherwise, the message returns -1. // ------------------------------------------------------------------------------ COLORREF SetMonthCalColor(int iColor, COLORREF ref); //----------------------------------------------------------------------- // Summary: // This member function sets the display of a date and time picker // control based on a given format string. // Parameters: // pstrFormat - A pointer to a zero-terminated format string that // defines the desired display. Setting this parameter // to NULL will reset the control to the default format // string for the current style. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetFormat(LPCTSTR pstrFormat); //----------------------------------------------------------------------- // Summary: // This member function retrieves the date and time picker's child // month calendar control. // Returns: // A pointer to a DDX_XTMonthCalCtrl object; // or NULL if unsuccessful or the window is not visible. //----------------------------------------------------------------------- CXTMonthCalCtrl* GetMonthCalCtrl() const; //----------------------------------------------------------------------- // Summary: // This member function retrieves the font currently used by the date // and time picker control's child month calendar control. // Parameters: // hFont - Handle to the font that will be set. // bRedraw - Specifies whether or not the control should be redrawn // immediately upon setting the font. Setting this // parameter to TRUE causes the control to redraw itself. // Returns: // A pointer to a CFont object, or returns NULL if unsuccessful. //----------------------------------------------------------------------- CFont* GetMonthCalFont() const; // ----------------------------------------------------------------------- // Summary: // This member function sets the font to be used by the date and time // picker control's child month calendar control. // Parameters: // hFont : Handle to a HFONT object that represents the new font to // use. // bRedraw : TRUE to redraw the CXTDateTimeCtrl object. // ----------------------------------------------------------------------- void SetMonthCalFont(HFONT hFont, BOOL bRedraw = TRUE); //----------------------------------------------------------------------- // Summary: // This member function sets the minimum and maximum allowable system // times for a date and time picker control. // Parameters: // pMinRange - A pointer to a CTime or COleDateTime object containing the // earliest time allowed in the CXTDateTimeCtrl object. // pMaxRange - A pointer to a CTime or COleDateTime object containing the // latest time allowed in the CXTDateTimeCtrl object. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetRange(const COleDateTime* pMinRange, const COleDateTime* pMaxRange); //----------------------------------------------------------------------- // Summary: // This member function sets the minimum and maximum allowable system // times for a date and time picker control. // Parameters: // pMinRange - A pointer to a CTime or COleDateTime object containing the // earliest time allowed in the CXTDateTimeCtrl object. // pMaxRange - A pointer to a CTime or COleDateTime object containing the // latest time allowed in the CXTDateTimeCtrl object. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetRange(const CTime* pMinRange, const CTime* pMaxRange); //----------------------------------------------------------------------- // Summary: // This member function retrieves the current minimum and maximum allowable // system times for a date and time picker control. // Parameters: // pMinRange - A pointer to a COleDateTime or CTime object containing the earliest // time allowed in the CXTDateTimeCtrl object. // pMaxRange - A pointer to a COleDateTime or CTime object containing the latest // time allowed in the CXTDateTimeCtrl object. // Returns: // A DWORD value containing flags that indicate which ranges are set. //----------------------------------------------------------------------- DWORD GetRange(COleDateTime* pMinRange, COleDateTime* pMaxRange) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves the current minimum and maximum allowable // system times for a date and time picker control. // Parameters: // pMinRange - A pointer to a COleDateTime or CTime object containing the earliest // time allowed in the CXTDateTimeCtrl object. // pMaxRange - A pointer to a COleDateTime or CTime object containing the latest // time allowed in the CXTDateTimeCtrl object. // Returns: // A DWORD value containing flags that indicate which ranges are set. //----------------------------------------------------------------------- DWORD GetRange(CTime* pMinRange, CTime* pMaxRange) const; //----------------------------------------------------------------------- // Summary: // This member function sets the time in a date and time picker control. // Parameters: // pTimeNew - A pointer to a CTime or SYSTEMTIME object containing the time that // the control will be set to. // timeNew - A reference to a COleDateTime object containing the // time that the control will be set to. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetTime(const CTime* pTimeNew); //----------------------------------------------------------------------- // Summary: // This member function sets the time in a date and time picker control. // Parameters: // pTimeNew - A pointer to a CTime or SYSTEMTIME object containing the time that // the control will be set to. // timeNew - A reference to a COleDateTime object containing the // time that the control will be set to. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetTime(const COleDateTime& timeNew); //----------------------------------------------------------------------- // Summary: // This member function sets the time in a date and time picker control. // Parameters: // pTimeNew - A pointer to a CTime or SYSTEMTIME object containing the time that // the control will be set to. // timeNew - A reference to a COleDateTime object containing the // time that the control will be set to. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetTime(LPSYSTEMTIME pTimeNew = NULL); //----------------------------------------------------------------------- // Summary: // This member function retrieves the currently selected time from // a date and time picker control and places it in a specified SYSTEMTIME // structure. // Parameters: // timeDest - A reference to a CTime or COleDateTime object that will receive // the system time information. // pTimeDest - A pointer to the SYSTEMTIME structure to receive // the system time information. Must not be NULL. // Returns: // In the first version nonzero if the time is successfully written to the // COleDateTime object, otherwise returns zero. In the second and third version // a DWORD value equal to the dwFlag member set in the NMDATETIMECHANGE // structure. //----------------------------------------------------------------------- BOOL GetTime(COleDateTime& timeDest) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves the currently selected time from // a date and time picker control and places it in a specified SYSTEMTIME // structure. // Parameters: // timeDest - A reference to a CTime or COleDateTime object that will receive // the system time information. // pTimeDest - A pointer to the SYSTEMTIME structure to receive // the system time information. Must not be NULL. // Returns: // In the first version nonzero if the time is successfully written to the // COleDateTime object, otherwise returns zero. In the second and third version // a DWORD value equal to the dwFlag member set in the NMDATETIMECHANGE // structure. //----------------------------------------------------------------------- DWORD GetTime(CTime& timeDest) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves the currently selected time from // a date and time picker control and places it in a specified SYSTEMTIME // structure. // Parameters: // timeDest - A reference to a CTime or COleDateTime object that will receive // the system time information. // pTimeDest - A pointer to the SYSTEMTIME structure to receive // the system time information. Must not be NULL. // Returns: // In the first version nonzero if the time is successfully written to the // COleDateTime object, otherwise returns zero. In the second and third version // a DWORD value equal to the dwFlag member set in the NMDATETIMECHANGE // structure. //----------------------------------------------------------------------- DWORD GetTime(LPSYSTEMTIME pTimeDest) const; private: BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); }; ////////////////////////////////////////////////////////////////////// AFX_INLINE CXTDateTimeCtrl::CXTDateTimeCtrl() { } AFX_INLINE BOOL CXTDateTimeCtrl::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) { return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext); } AFX_INLINE CFont* CXTDateTimeCtrl::GetMonthCalFont() const { ASSERT(::IsWindow(m_hWnd)); return CFont::FromHandle((HFONT) ::SendMessage(m_hWnd, DTM_GETMCFONT, 0, 0)); } AFX_INLINE CXTMonthCalCtrl* CXTDateTimeCtrl::GetMonthCalCtrl() const { ASSERT(::IsWindow(m_hWnd)); return (CXTMonthCalCtrl*) CWnd::FromHandle((HWND) ::SendMessage(m_hWnd, DTM_GETMONTHCAL, 0, 0)); } AFX_INLINE void CXTDateTimeCtrl::SetMonthCalFont(HFONT hFont, BOOL bRedraw) { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, DTM_SETMCFONT, (WPARAM) hFont, MAKELONG(bRedraw, 0)); } AFX_INLINE COLORREF CXTDateTimeCtrl::SetMonthCalColor(int iColor, COLORREF ref) { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, DTM_SETMCCOLOR, (WPARAM) iColor, (LPARAM) ref); } AFX_INLINE DWORD CXTDateTimeCtrl::GetTime(LPSYSTEMTIME pTimeDest) const { ASSERT(::IsWindow(m_hWnd)); ASSERT(pTimeDest != NULL); return (DWORD) ::SendMessage(m_hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM) pTimeDest); } AFX_INLINE COLORREF CXTDateTimeCtrl::GetMonthCalColor(int iColor) const { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, DTM_GETMCCOLOR, (WPARAM) iColor, 0); } AFX_INLINE BOOL CXTDateTimeCtrl::SetFormat(LPCTSTR pstrFormat) { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, DTM_SETFORMAT, 0, (LPARAM) pstrFormat); } // ---------------------------------------------------------------------------- // Summary: // The DDX_XTDateTimeCtrl function manages the transfer of // date and/or time data between a date and time picker control // (CXTDateTimeCtrl) in a dialog box or form view object and a // COleDateTime data member of the dialog box or form view object. // // When DDX_XTDateTimeCtrl is called, 'value' is set to // the current state of the date and time picker control, or the // control is set to 'value', depending on the direction of // the exchange. // Parameters: // pDX - A pointer to a CDataExchange object. The framework supplies // this object to establish the context of the data exchange, // including its direction. You do not need to delete this object. // nIDC - The resource ID of the date and time picker control associated // with the member variable. // value - A reference to a COleDateTime member variable, dialog box, form // view, or control view object with which data is exchanged. // See Also: // CXTDateTimeCtrl // ---------------------------------------------------------------------------- _XTP_EXT_CLASS void AFXAPI DDX_XTDateTimeCtrl(CDataExchange* pDX, int nIDC, COleDateTime& value); // ---------------------------------------------------------------------------- // Summary: // The DDX_XTDateTimeCtrl function manages the transfer of // date and/or time data between a date and time picker control // (CXTDateTimeCtrl) in a dialog box or form view object, and a CTime // data member of the dialog box or form view object. // // When DDX_XTDateTimeCtrl is called, 'value' is set to // the current state of the date and time picker control, or the // control is set to 'value', depending on the direction of // the exchange. // Parameters: // pDX - A pointer to a CDataExchange object. The framework supplies // this object to establish the context of the data exchange, // including its direction. You do not need to delete this object. // nIDC - The resource ID of the date and time picker control associated // with the member variable. // value - A reference to a CTime member variable, dialog box, form view, // or control view object with which data is exchanged. // See Also: // CXTDateTimeCtrl // ---------------------------------------------------------------------------- _XTP_EXT_CLASS void AFXAPI DDX_XTDateTimeCtrl(CDataExchange* pDX, int nIDC, CTime& value); // ---------------------------------------------------------------------------- // Summary: // Call DDV_XTMinMaxDateTime to verify that the time/date // value in the date and time picker control (CXTDateTimeCtrl) // associated with 'refValue' falls between 'pMinRange' // and 'pMaxRange'. // Parameters: // pDX - A pointer to a CDataExchange object. The framework supplies // this object to establish the context of the data exchange, // including its direction. You do not need to delete this // object. // refValue - A reference to a CTime object associated with a member // variable of the dialog box, form view, or control view // object. This object contains the data to be validated. // pMinRange - Minimum date/time value allowed. // pMaxRange - Maximum date/time value allowed. // See Also: // CXTDateTimeCtrl // ---------------------------------------------------------------------------- _XTP_EXT_CLASS void AFXAPI DDV_XTMinMaxDateTime(CDataExchange* pDX, CTime& refValue, const CTime* pMinRange, const CTime* pMaxRange); // ---------------------------------------------------------------------------- // Summary: // Call DDV_XTMinMaxDateTime to verify that the time/date // value in the date and time picker control (CXTDateTimeCtrl) // associated with 'refValue' falls between 'pMinRange' // and 'pMaxRange'. // Parameters: // pDX - A pointer to a CDataExchange object. The framework supplies // this object to establish the context of the data exchange, // including its direction. You do not need to delete this // object. // refValue - A reference to a COleDateTime object associated with a // member variable of the dialog box, form view, or control // view object. This object contains the data to be validated. // pMinRange - Minimum date/time value allowed. // pMaxRange - Maximum date/time value allowed. // See Also: // CXTDateTimeCtrl // ---------------------------------------------------------------------------- _XTP_EXT_CLASS void AFXAPI DDV_XTMinMaxDateTime(CDataExchange* pDX, COleDateTime& refValue, const COleDateTime* pMinRange, const COleDateTime* pMaxRange); //=========================================================================== // Summary: // CXTMonthCalCtrl is a CWnd derived class. A CXTMonthCalCtrl object encapsulates // the functionality of a month calendar control. // Remarks: // The month calendar control provides the user with a simple calendar interface that the user // can select a date from. The user can change the display by: // // * Scrolling backward and forward, from month to month. // * Clicking the Today text to display the current day (if the MCS_NOTODAY // style is not used). // * Picking a month or a year from a popup menu. // // You can customize the month calendar control by applying a variety of // styles to the object when you create it. These styles are described // in Month Calendar Control Styles in the Platform SDK. // // The month calendar control can display more than one month, and it can // indicate special days, such as holidays, by bolding the date. // // For more information on using the month calendar control, see Using // CXTMonthCalCtrl in the Xtreme Toolkit online help. //=========================================================================== class _XTP_EXT_CLASS CXTMonthCalCtrl : public CWnd { DECLARE_DYNAMIC(CXTMonthCalCtrl) public: //----------------------------------------------------------------------- // Summary: // Constructs a CXTMonthCalCtrl object //----------------------------------------------------------------------- CXTMonthCalCtrl(); //----------------------------------------------------------------------- // Summary: // Destroys a CXTMonthCalCtrl object, handles cleanup and deallocation //----------------------------------------------------------------------- virtual ~CXTMonthCalCtrl(); public: //----------------------------------------------------------------------- // Summary: // This member function creates a month calendar control and attaches // it to the DDX_XTMonthCalCtrl object. // Parameters: // dwStyle - Specifies the combination of Windows styles applied // to the month calendar control. See Month Calendar // Control Styles in the Platform SDK for more information // about the styles. // rect - A reference to a RECT structure. Contains the position // and size of the month calendar control. // pt - A reference to a POINT structure that identifies // the location of the month calendar control. // pParentWnd - A pointer to a CWnd object that is the parent window // of the month calendar control. It must not be NULL. // nID - Specifies the control ID of the month calendar control. // Returns: // Nonzero if initialization was successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); BOOL Create(DWORD dwStyle, const POINT& pt, CWnd* pParentWnd, UINT nID); // //----------------------------------------------------------------------- // Summary: // This member function retrieves the minimum size required to show // a full month in a month calendar control. // Parameters: // pRect - A pointer to a RECT structure that will receive // bounding rectangle information. This parameter must be a valid // address and cannot be NULL. // Returns: // Nonzero and 'lpRect' receives the applicable bounding information. If // unsuccessful, this member function returns zero. //----------------------------------------------------------------------- BOOL GetMinReqRect(RECT* pRect) const; //----------------------------------------------------------------------- // Summary: // This member function sets the scroll rate for a month calendar // control. // Parameters: // iDelta - The number of months to be set as the control's scroll // rate. If this value is zero, the month delta is reset // to the default, which is the number of months displayed // in the control. // Returns: // The previous scroll rate. If the scroll rate has not been previously // set, the return value is zero. //----------------------------------------------------------------------- int SetMonthDelta(int iDelta); //----------------------------------------------------------------------- // Summary: // This member function retrieves the scroll rate for a month calendar // control. The scroll rate is the number of months that the control // moves its display when the user clicks a scroll button once. // Returns: // An integer value that represents the scroll rate for the month // calendar control. //----------------------------------------------------------------------- int GetMonthDelta() const; //----------------------------------------------------------------------- // Summary: // This member function sets the day of the week to be displayed in // the leftmost column of the calendar. // Parameters: // iDay - An integer value representing which day is to be set // as the first day of the week. This value must be one // of the day numbers. See GetFirstDayOfWeek for a description // of the day numbers. // lpnOld - A pointer to an integer indicating the first day of // the week that was previously set. // Returns: // Nonzero if the previous first day of the week is set to a value other than // that of LOCALE_IFIRSTDAYOFWEEK, which is the day indicated in the control // panel setting. Otherwise, this function returns zero. //----------------------------------------------------------------------- BOOL SetFirstDayOfWeek(int iDay, int* lpnOld = NULL); //----------------------------------------------------------------------- // Summary: // This member function gets the first day of the week to be displayed // in the leftmost column of the calendar. // Parameters: // pbLocal - A pointer to a BOOL value. If the value is nonzero, // the control's setting does not match the setting in // the control panel. // Returns: // An integer value that represents the first day of the week. // The days of the week are represented by integers, as follows: // // Value Day of the Week // 0 Monday // 1 Tuesday // 2 Wednesday // 3 Thursday // 4 Friday // 5 Saturday // 6 Sunday // //----------------------------------------------------------------------- int GetFirstDayOfWeek(BOOL* pbLocal = NULL) const; //----------------------------------------------------------------------- // Summary: // This member function gets the color of a specified area of a month // calendar control. // Parameters: // nRegion - The region of the month calendar control from which // the color is retrieved. For a list of values, see the // 'nRegion' parameter of SetColor. // Returns: // A COLORREF value specifying the color associated // with the portion of the month calendar control, if successful. // Otherwise, this member function returns -1. //----------------------------------------------------------------------- COLORREF GetColor(int nRegion) const; //----------------------------------------------------------------------- // Summary: // This member function sets the color of a specified area of a month // calendar control. // Parameters: // nRegion - An integer value specifying which month calendar color // to set. See remarks section for a list of values. // ref - A COLORREF value for the new color setting for the specified // portion of the month calendar control. // Remarks: // nRegion values can be one of the following: // * MCSC_BACKGROUND The background color displayed between // months. // * MCSC_MONTHBK The background color displayed within // the month. // * MCSC_TEXT The color used to display text within a month. // * MCSC_TITLEBK The background color displayed in the // calendar's title. // * MCSC_TITLETEXT The color used to display text within // the calendar's title. // * MCSC_TRAILINGTEXT The color used to display header // and trailing-day text. Header and trailing days are the days // from the previous and following months that appear on the current // calendar. // Returns: // A COLORREF value that represents the previous // color setting for the specified portion of the month calendar // control, if successful. Otherwise this message returns -1. //----------------------------------------------------------------------- COLORREF SetColor(int nRegion, COLORREF ref); //----------------------------------------------------------------------- // Summary: // This member function repaints the month calendar control to its // minimum, one-month size. // Parameters: // bRepaint - Specifies whether the control is to be repainted. // By default, TRUE. If FALSE, no repainting occurs. // Returns: // Nonzero if the month calendar control is sized to its minimum, otherwise // returns zero. //----------------------------------------------------------------------- BOOL SizeMinReq(BOOL bRepaint = TRUE); //----------------------------------------------------------------------- // Summary: // This member function sets the calendar control to the current day. // Parameters: // refDateTime - A reference to a COleDateTime object that contains // the current date. // pDateTime - A pointer to a CTime or SYSTEMTIME object containing the current // date information. //----------------------------------------------------------------------- void SetToday(const CTime* pDateTime); //----------------------------------------------------------------------- // Summary: // This member function sets the calendar control to the current day. // Parameters: // refDateTime - A reference to a COleDateTime object that contains // the current date. //----------------------------------------------------------------------- void SetToday(const COleDateTime& refDateTime); //----------------------------------------------------------------------- // Summary: // This member function sets the calendar control to the current day. // Parameters: // pDateTime - A pointer to a CTime or SYSTEMTIME object containing the current // date information. //----------------------------------------------------------------------- void SetToday(const LPSYSTEMTIME pDateTime); //----------------------------------------------------------------------- // Summary: // This member function retrieves the date information for the date // specified as "today" for a month calendar control. // Parameters: // refTime - A reference to a CTime or COleDateTime object indicating the current day. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL GetToday(CTime& refTime) const; // -------------------------------------------------------------------- // Summary: // This member function retrieves the date information for the date // specified as "today" for a month calendar control. // Parameters: // refDateTime : A reference to a CTime or COleDateTime object // indicating the current day. // Returns: // Nonzero if successful, otherwise returns zero. // -------------------------------------------------------------------- BOOL GetToday(COleDateTime& refDateTime) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves the date information for the date // specified as "today" for a month calendar control. // Parameters: // pDateTime - A pointer to a SYSTEMTIME structure that // will receive the date information. This parameter // must be a valid address and cannot be NULL. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL GetToday(LPSYSTEMTIME pDateTime) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves the system time as indicated by the // currently selected date. // Parameters: // refTime - A reference to a CTime object. It receives the // current time. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL GetCurSel(CTime& refTime) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves the system time as indicated by the // currently selected date. // Parameters: // refDateTime - A reference to a COleDateTime object. It receives the // current time. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL GetCurSel(COleDateTime& refDateTime) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves the system time as indicated by the // currently selected date. // Parameters: // pDateTime - A pointer to a SYSTEMTIME structure that will receive // the currently selected date information. This parameter // must be a valid address and cannot be NULL. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL GetCurSel(LPSYSTEMTIME pDateTime) const; //----------------------------------------------------------------------- // Summary: // This member function sets the currently selected date for a month // calendar control. // Parameters: // refDateTime - A reference to a CTime or COleDateTime object indicating the // currently selected month calendar control. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetCurSel(const CTime& refDateTime); //----------------------------------------------------------------------- // Summary: // This member function sets the currently selected date for a month // calendar control. // Parameters: // refDateTime - A reference to a CTime or COleDateTime object indicating the // currently selected month calendar control. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetCurSel(const COleDateTime& refDateTime); //----------------------------------------------------------------------- // Summary: // This member function sets the currently selected date for a month // calendar control. // Parameters: // pDateTime - Pointer to a SYSTEMTIME structure that contains the // date to be set as the current selection. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetCurSel(const LPSYSTEMTIME pDateTime); //----------------------------------------------------------------------- // Summary: // This member function sets the display for days in a month calendar // control. // Parameters: // nMonths - Value indicating how many elements are in the array // that 'pStates' points to. // pStates - A pointer to a MONTHDAYSTATE array of values that define // how the month calendar control will draw each day in its // display. The MONTHDAYSTATE data type is a bit field, where // each bit (1 through 31) represents the state of a day in a // month. If a bit is on, the corresponding day will be displayed // in bold; otherwise it will be displayed with no emphasis. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetDayState(int nMonths, LPMONTHDAYSTATE pStates); //----------------------------------------------------------------------- // Summary: // This member function sets the maximum number of days that can // be selected in a month calendar control. // Parameters: // nMax - Specifies the value that will be set to represent the // maximum number of selectable days. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetMaxSelCount(int nMax); //----------------------------------------------------------------------- // Summary: // This member function retrieves the current maximum number of days // that can be selected in a month calendar control. // Returns: // An integer value that represents the total number of days that // can be selected for the control. //----------------------------------------------------------------------- int GetMaxSelCount() const; //----------------------------------------------------------------------- // Summary: // This member function sets the minimum and maximum allowable dates for a month // calendar control. // Parameters: // pMinRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing // the date at the lowest end of the range. // pMaxRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing the // date at the highest end of the range. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetRange(const CTime* pMinRange, const CTime* pMaxRange); //----------------------------------------------------------------------- // Summary: // This member function sets the minimum and maximum allowable dates for a month // calendar control. // Parameters: // pMinRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing // the date at the lowest end of the range. // pMaxRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing the // date at the highest end of the range. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetRange(const COleDateTime* pMinRange, const COleDateTime* pMaxRange); //----------------------------------------------------------------------- // Summary: // This member function sets the minimum and maximum allowable dates for a month // calendar control. // Parameters: // pMinRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing // the date at the lowest end of the range. // pMaxRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing the // date at the highest end of the range. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL SetRange(const LPSYSTEMTIME pMinRange, const LPSYSTEMTIME pMaxRange); //----------------------------------------------------------------------- // Summary: // This member function retrieves the current minimum and maximum dates set // in a month calendar control. // Parameters: // pMinRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing // the date at the lowest end of the range. // pMaxRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing the // date at the highest end of the range. // Returns: // A DWORD that can be zero (no limits are set) or a combination // of the following values that specify limit information: // // * GDTR_MAX A maximum limit is set for the control; pMaxRange // is valid and contains the applicable date information. // * GDTR_MIN A minimum limit is set for the control; pMinRange // is valid and contains the applicable date information. // //----------------------------------------------------------------------- DWORD GetRange(CTime* pMinRange, CTime* pMaxRange) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves the current minimum and maximum dates set // in a month calendar control. // Parameters: // pMinRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing // the date at the lowest end of the range. // pMaxRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing the // date at the highest end of the range. // Returns: // A DWORD that can be zero (no limits are set) or a combination // of the following values that specify limit information: // // * GDTR_MAX A maximum limit is set for the control; pMaxRange // is valid and contains the applicable date information. // * GDTR_MIN A minimum limit is set for the control; pMinRange // is valid and contains the applicable date information. // //----------------------------------------------------------------------- DWORD GetRange(COleDateTime* pMinRange, COleDateTime* pMaxRange) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves the current minimum and maximum dates set // in a month calendar control. // Parameters: // pMinRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing // the date at the lowest end of the range. // pMaxRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing the // date at the highest end of the range. // Returns: // A DWORD that can be zero (no limits are set) or a combination // of the following values that specify limit information: // // * GDTR_MAX A maximum limit is set for the control; pMaxRange // is valid and contains the applicable date information. // * GDTR_MIN A minimum limit is set for the control; pMinRange // is valid and contains the applicable date information. // //----------------------------------------------------------------------- DWORD GetRange(LPSYSTEMTIME pMinRange, LPSYSTEMTIME pMaxRange) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves date information representing the // high and low limits of a month calendar control's display. // Parameters: // refMinRange - A reference to a CTime or COleDateTime object // containing the minimum date allowed. // refMaxRange - A reference to a CTime or COleDateTime object containing // the maximum date allowed. // dwFlags - Value specifying the scope of the range limits to // be retrieved. This value must be one of the following: // // * GMR_DAYSTATE Include preceding and trailing months // of visible range that are only partially displayed. // * GMR_VISIBLE Include only those months that are entirely // displayed. // Returns: // An integer that represents the range, in months, spanned by the two // limits indicated by 'refMinRange' and 'refMaxRange'. //----------------------------------------------------------------------- int GetMonthRange(CTime& refMinRange, CTime& refMaxRange, DWORD dwFlags) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves date information representing the // high and low limits of a month calendar control's display. // Parameters: // refMinRange - A reference to a CTime or COleDateTime object // containing the minimum date allowed. // refMaxRange - A reference to a CTime or COleDateTime object containing // the maximum date allowed. // dwFlags - Value specifying the scope of the range limits to // be retrieved. This value must be one of the following: // // * GMR_DAYSTATE Include preceding and trailing months // of visible range that are only partially displayed. // * GMR_VISIBLE Include only those months that are entirely // displayed. // Returns: // An integer that represents the range, in months, spanned by the two // limits indicated by 'refMinRange' and 'refMaxRange'. //----------------------------------------------------------------------- int GetMonthRange(COleDateTime& refMinRange, COleDateTime& refMaxRange, DWORD dwFlags) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves date information representing the // high and low limits of a month calendar control's display. // Parameters: // pMinRange - A pointer to a SYSTEMTIME structure containing the // date at the lowest end of the range. // pMaxRange - A pointer to a SYSTEMTIME structure containing the // date at the highest end of the range. // dwFlags - Value specifying the scope of the range limits to // be retrieved. This value must be one of the following: // // * GMR_DAYSTATE Include preceding and trailing months // of visible range that are only partially displayed. // * GMR_VISIBLE Include only those months that are entirely // displayed. // Returns: // An integer that represents the range, in months, spanned by the two // limits indicated by 'refMinRange' and 'refMaxRange'. //----------------------------------------------------------------------- int GetMonthRange(LPSYSTEMTIME pMinRange, LPSYSTEMTIME pMaxRange, DWORD dwFlags) const; //----------------------------------------------------------------------- // Summary: // This member function sets the selection for a month calendar // control to a given date range. // Returns: // Nonzero if successful, otherwise returns zero. // Parameters: // pMinRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing // the date at the lowest end of the range. // pMaxRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing the // date at the highest end of the range. //----------------------------------------------------------------------- BOOL SetSelRange(const CTime& pMinRange, const CTime& pMaxRange); //----------------------------------------------------------------------- // Summary: // This member function sets the selection for a month calendar // control to a given date range. // Returns: // Nonzero if successful, otherwise returns zero. // Parameters: // pMinRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing // the date at the lowest end of the range. // pMaxRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing the // date at the highest end of the range. //----------------------------------------------------------------------- BOOL SetSelRange(const COleDateTime& pMinRange, const COleDateTime& pMaxRange); //----------------------------------------------------------------------- // Summary: // This member function sets the selection for a month calendar // control to a given date range. // Returns: // Nonzero if successful, otherwise returns zero. // Parameters: // pMinRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing // the date at the lowest end of the range. // pMaxRange - A pointer to a CTime, COleDateTime or SYSTEMTIME object containing the // date at the highest end of the range. //----------------------------------------------------------------------- BOOL SetSelRange(const LPSYSTEMTIME pMinRange, const LPSYSTEMTIME pMaxRange); //----------------------------------------------------------------------- // Summary: // This member function retrieves date information that represents the // upper and lower limits of the date range currently selected by the // user. // Parameters: // refMinRange - A reference to a CTime or COleDateTime object containing // the minimum date allowed. // refMaxRange - A reference to a CTime or COleDateTime object containing // the maximum date allowed. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL GetSelRange(CTime& refMinRange, CTime& refMaxRange) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves date information that represents the // upper and lower limits of the date range currently selected by the // user. // Parameters: // refMinRange - A reference to a CTime or COleDateTime object containing // the minimum date allowed. // refMaxRange - A reference to a CTime or COleDateTime object containing // the maximum date allowed. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL GetSelRange(COleDateTime& refMinRange, COleDateTime& refMaxRange) const; //----------------------------------------------------------------------- // Summary: // This member function retrieves date information that represents the // upper and lower limits of the date range currently selected by the // user. // Parameters: // pMinRange - A pointer to a SYSTEMTIME structure containing // the date at the lowest end of the range. // pMaxRange - A pointer to a SYSTEMTIME structure containing the // date at the highest end of the range. // Returns: // Nonzero if successful, otherwise returns zero. //----------------------------------------------------------------------- BOOL GetSelRange(LPSYSTEMTIME pMinRange, LPSYSTEMTIME pMaxRange) const; //----------------------------------------------------------------------- // Summary: // This member function determines which portion of a month calendar // control is at a given point on the screen. // Parameters: // pMCHitTest - A pointer to a MCHITTESTINFO structure containing // hit testing points for the month calendar control. // Returns: // A DWORD value equal to the 'uHit' member of the MCHITTESTINFO // structure. //----------------------------------------------------------------------- DWORD HitTest(PMCHITTESTINFO pMCHitTest); private: BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); }; ////////////////////////////////////////////////////////////////////// AFX_INLINE CXTMonthCalCtrl::CXTMonthCalCtrl() { } AFX_INLINE BOOL CXTMonthCalCtrl::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) { return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext); } AFX_INLINE DWORD CXTMonthCalCtrl::HitTest(PMCHITTESTINFO pMCHitTest) { ASSERT(::IsWindow(m_hWnd)); return (DWORD) ::SendMessage(m_hWnd, MCM_HITTEST, 0, (LPARAM) pMCHitTest); } AFX_INLINE BOOL CXTMonthCalCtrl::GetMinReqRect(RECT* pRect) const { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, MCM_GETMINREQRECT, 0, (LPARAM) pRect); } AFX_INLINE int CXTMonthCalCtrl::SetMonthDelta(int iDelta) { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, MCM_SETMONTHDELTA, (WPARAM) iDelta, 0); } AFX_INLINE int CXTMonthCalCtrl::GetMonthDelta() const { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, MCM_GETMONTHDELTA, 0, 0); } AFX_INLINE COLORREF CXTMonthCalCtrl::GetColor(int nRegion) const { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, MCM_GETCOLOR, (WPARAM) nRegion, 0); } AFX_INLINE COLORREF CXTMonthCalCtrl::SetColor(int nRegion, COLORREF ref) { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, MCM_SETCOLOR, (WPARAM) nRegion, (LPARAM) ref); } AFX_INLINE BOOL CXTMonthCalCtrl::SetMaxSelCount(int nMax) { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, MCM_SETMAXSELCOUNT, nMax, 0); } AFX_INLINE int CXTMonthCalCtrl::GetMaxSelCount() const { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, MCM_GETMAXSELCOUNT, 0, 0); } AFX_INLINE void CXTMonthCalCtrl::SetToday(const LPSYSTEMTIME pDateTime) { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, MCM_SETTODAY, 0, (LPARAM) pDateTime); } AFX_INLINE BOOL CXTMonthCalCtrl::GetToday(LPSYSTEMTIME pDateTime) const { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, MCM_GETTODAY, 0, (LPARAM) pDateTime); } AFX_INLINE BOOL CXTMonthCalCtrl::SetCurSel(const LPSYSTEMTIME pDateTime) { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, MCM_SETCURSEL, 0, (LPARAM) pDateTime); } AFX_INLINE BOOL CXTMonthCalCtrl::GetCurSel(LPSYSTEMTIME pDateTime) const { ASSERT(::IsWindow(m_hWnd)); BOOL bRetVal = (BOOL)::SendMessage(m_hWnd, MCM_GETCURSEL, 0, (LPARAM) pDateTime); pDateTime->wHour = pDateTime->wMinute = pDateTime->wSecond = pDateTime->wMilliseconds = 0; return bRetVal; } // ---------------------------------------------------------------------------- // Summary: // The DDX_XTMonthCalCtrl function manages the transfer of // date data between a month calendar control (CXTMonthCalCtrl) in a // dialog box, form view, or control view object, and a COleDateTime // data member, of the dialog box, form view, or control view object. // // The control manages a date value only. The time fields in the time // object are set to reflect the creation time of the control // window, or whatever time was set in the control with a call to // CXTMonthCalCtrl::SetCurSel. // // When DDX_XTMonthCalCtrl is called, 'value' is set to // the current state of the month calendar control. // Parameters: // pDX - A pointer to a CDataExchange object. The framework supplies // this object to establish the context of the data exchange, // including its direction. You do not need to delete this object. // nIDC - The resource ID of the month calendar control associated with // the member variable. // value - A reference to a COleDateTime member variable of the dialog // box, form view, or control view object with which data is // exchanged. // See Also: // CXTMonthCalCtrl // ---------------------------------------------------------------------------- _XTP_EXT_CLASS void AFXAPI DDX_XTMonthCalCtrl(CDataExchange* pDX, int nIDC, COleDateTime& value); // ---------------------------------------------------------------------------- // Summary: // The DDX_XTMonthCalCtrl function manages the transfer of // date data between a month calendar control (CXTMonthCalCtrl), in a // dialog box, form view, or control view object, and a CTime data // member of the dialog box, form view, or control view object. // // The control manages a date value only. The time fields in the time // object are set to reflect the creation time of the control // window, or whatever time was set in the control with a call to // CXTMonthCalCtrl::SetCurSel. // // When DDX_XTMonthCalCtrl is called, 'value' is set to // the current state of the month calendar control. // Parameters: // pDX - A pointer to a CDataExchange object. The framework supplies // this object to establish the context of the data exchange, // including its direction. You do not need to delete this object. // nIDC - The resource ID of the month calendar control associated with // the member variable. // value - A reference to a CTime member variable of the dialog box, form // view, or control view object with which data is exchanged. // See Also: // CXTMonthCalCtrl // ---------------------------------------------------------------------------- _XTP_EXT_CLASS void AFXAPI DDX_XTMonthCalCtrl(CDataExchange* pDX, int nIDC, CTime& value); // ------------------------------------------------------------------------------------- // Summary: // Call DDV_XTMinMaxMonth to verify that the time/date value // in the month calendar control (CXTMonthCalCtrl) associated with 'refValue' // falls between 'pMinRange' and 'pMaxRange'. // Parameters: // pDX - A pointer to a CDataExchange object. The framework supplies // this object to establish the context of the data exchange, // including its direction. // refValue - A reference to an object of type CTime associated with a // member variable of the dialog box, form view, or control view // object. This object contains the data to be validated. MFC // passes this reference when DDV_XTMinMaxMonth is // called. // pMinRange - Minimum date/time value allowed. // pMaxRange - Maximum date/time value allowed. // See Also: // CXTMonthCalCtrl // ------------------------------------------------------------------------------------- _XTP_EXT_CLASS void AFXAPI DDV_XTMinMaxMonth(CDataExchange* pDX, CTime& refValue, const CTime* pMinRange, const CTime* pMaxRange); // ------------------------------------------------------------------------------------- // Summary: // Call DDV_XTMinMaxMonth to verify that the time/date value // in the month calendar control (CXTMonthCalCtrl) associated with 'refValue' // falls between 'pMinRange' and 'pMaxRange'. // Parameters: // pDX - A pointer to a CDataExchange object. The framework supplies // this object to establish the context of the data exchange, // including its direction. // refValue - A reference to an object of type CTime associated with a // member variable of the dialog box, form view, or control view // object. This object contains the data to be validated. MFC // passes this reference when DDV_XTMinMaxMonth is // called. // pMinRange - Minimum date/time value allowed. // pMaxRange - Maximum date/time value allowed. // See Also: // CXTMonthCalCtrl // ------------------------------------------------------------------------------------- _XTP_EXT_CLASS void AFXAPI DDV_XTMinMaxMonth(CDataExchange* pDX, COleDateTime& refValue, const COleDateTime* pMinRange, const COleDateTime* pMaxRange); #endif // #if !defined(__XTDATETIMECTRL_H__)