You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2133 lines
90 KiB
C++
2133 lines
90 KiB
C++
// XTPDatePickerControl.h: interface for the CXTPDatePickerControl class.
|
|
//
|
|
// This file is a part of the XTREME CALENDAR 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(_XTPDATEPICKERCONTROL_H__)
|
|
#define _XTPDATEPICKERCONTROL_H__
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
// XTPDatePickerControl.h : header file
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CXTPDatePickerControl window
|
|
|
|
class CXTPDatePickerPaintManager;
|
|
class CXTPDatePickerItemMonth;
|
|
class CXTPDatePickerDaysCollection;
|
|
class CXTPDatePickerList;
|
|
class CXTPDatePickerControl;
|
|
class CXTPNotifyConnection;
|
|
class CXTPNotifySink;
|
|
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// This structure represents a set of parameters which are
|
|
// used to display day items.
|
|
// 1. There could be customized foreground and background colors.
|
|
// 2. Also you can text font for the displayed day text.
|
|
// 3. And as the last thing you can customize a day picture displayed there,
|
|
// using OLE PICTUREDISP interface and OleSetPicture method.
|
|
//===========================================================================
|
|
struct _XTP_EXT_CLASS XTP_DAYITEM_METRICS : public CXTPCmdTarget
|
|
{
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Get day item font..
|
|
// Returns:
|
|
// A pointer to the font object.
|
|
// Remarks:
|
|
// Return a day font stored by the structure.
|
|
//-----------------------------------------------------------------------
|
|
CFont* GetFont();
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Set a new font for the day item.
|
|
// Parameters:
|
|
// pFont - Pointer to a CFont object.
|
|
//-----------------------------------------------------------------------
|
|
void SetFont(CFont* pFont);
|
|
|
|
COLORREF clrForeground; // A COLORREF object that contains the item's foreground color.
|
|
COLORREF clrBackground; // A COLORREF object that contains the item's background color.
|
|
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
XTP_DAYITEM_METRICS();
|
|
virtual ~XTP_DAYITEM_METRICS(){};
|
|
|
|
private:
|
|
CFont m_fntText; // A CFont object that contains the item's text font.
|
|
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
};
|
|
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// Structure used to send button notification messages.
|
|
// Remarks:
|
|
// This structure represents a set of parameters which are sent
|
|
// to the Main window in a WM_NOTIFY message from DatePicker control
|
|
// and notify the main window when a button event occurs.
|
|
//===========================================================================
|
|
struct XTP_NC_DATEPICKER_BUTTON
|
|
{
|
|
NMHDR hdr; // Contains information about a notification message.
|
|
int nID; // Date picker button ID (could be XTP_IDS_DATEPICKER_TODAY or XTP_IDS_DATEPICKER_NONE)
|
|
};
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Summary:
|
|
// Callback function definition for the IsITEMMETRICS function.
|
|
// Remarks:
|
|
// First three arguments are required. The pUserData can be NULL.
|
|
// pDatePicker - is CXTPDatePickerControl* type to provide DatePicker
|
|
// control pointer.
|
|
// rDateTime - is COleDateTime reference type to provide date time
|
|
// storage object.
|
|
// pDayItemMetrics - is XTP_DAYITEM_METRICS* pointer type to provide display
|
|
// metrics.
|
|
// pUserData - is void* pointer to any additional user's defined parameter,
|
|
// this value can be NULL.
|
|
//---------------------------------------------------------------------------
|
|
typedef void (CALLBACK* PFNITEMMETRICS)(CXTPDatePickerControl* pDatePicker, const COleDateTime& rDateTime, XTP_DAYITEM_METRICS* pDayItemMetrics, void* pUserData);
|
|
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
const UINT XTP_NC_DATEPICKER_BUTTON_CLICK = (NM_FIRST - 50); // Notify ID to parent window.
|
|
const UINT XTP_NC_DATEPICKER_SELECTION_CHANGED = (NM_FIRST - 51); // Notify ID to parent window.
|
|
const UINT XTP_DATEPICKER_TIMERID = 255; // Date picker timer ID.
|
|
const UINT XTP_DATEPICKER_TIMER_INTERVAL = 200; // Date picker timer interval.
|
|
const UINT XTP_SELECTION_INFINITE = (UINT)-1; // Infinite number of selected days.
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// Border style of Date picker control
|
|
// ----------------------------------------------------------------------
|
|
enum XTPDatePickerBorderStyle
|
|
{
|
|
xtpDatePickerBorderNone, // No border.
|
|
xtpDatePickerBorder3D, // 3D border.
|
|
xtpDatePickerBorderOffice, // Office-like border
|
|
xtpDatePickerBorderStatic // Static border.
|
|
};
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This class represents a DatePicker button.
|
|
// Remarks:
|
|
// CXTPDatePickerButton provides storage for all parameters needed to
|
|
// display and handle a button.
|
|
// ----------------------------------------------------------------------
|
|
class _XTP_EXT_CLASS CXTPDatePickerButton
|
|
{
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Default button constructor.
|
|
// Remarks:
|
|
// Default button constructor handles all necessary
|
|
// initialization.
|
|
//-----------------------------------------------------------------------
|
|
CXTPDatePickerButton();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPDatePickerButton object, handles cleanup
|
|
// and de-allocation.
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CXTPDatePickerButton()
|
|
{
|
|
}
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Get a button caption.
|
|
// Remarks:
|
|
// Load from resources string using ID stored in m_nID member or
|
|
// value which was set by SetCaption() call.
|
|
// Returns:
|
|
// Returns a button caption.
|
|
// See Also: m_nID, SetCaption
|
|
//-----------------------------------------------------------------------
|
|
virtual CString GetCaption() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Set a button caption.
|
|
// Parameters:
|
|
// pcszCaption - A caption string.
|
|
// Remarks:
|
|
// If pcszCaption is empty string - GetCaption will the m_nID to load
|
|
// caption string from resources.
|
|
// See Also: GetCaption, m_nID
|
|
//-----------------------------------------------------------------------
|
|
virtual void SetCaption(LPCTSTR pcszCaption);
|
|
|
|
public:
|
|
int m_nID; // This member variable is used to specify the identifier of the
|
|
// button. Also it used as resource ID for a caption string.
|
|
|
|
CRect m_rcButton; // This member variable is used to specify the bounding rectangle
|
|
// coordinates of a button.
|
|
|
|
BOOL m_bVisible; // This member variable is used to indicate if a button is visible.
|
|
|
|
BOOL m_bPressed; // This member variable is used to indicate if a button is pressed.
|
|
|
|
BOOL m_bHighlight; // This member variable is used to indicate if a button is
|
|
// highlighted.
|
|
|
|
protected:
|
|
CString m_strCaption; // This member variable is used to specify the caption of the button.
|
|
};
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// Class CXTPDatePickerButtons represents a collection of buttons.
|
|
// Remarks:
|
|
// CXTPDatePickerButtons inherits most of the behavior of the
|
|
// standard MFC CArray. The DatePicker control can display and handle
|
|
// any number of buttons. CXTPDatePickerButtons provides the basic
|
|
// functionality to handle the collection.<p/>
|
|
// Create a CXTPDatePickerButtons object by calling the default
|
|
// constructor without parameters. Furthermore, add buttons to
|
|
// collection using standard CArray member functions.
|
|
// See Also:
|
|
// CArray
|
|
// ----------------------------------------------------------------------
|
|
class _XTP_EXT_CLASS CXTPDatePickerButtons : public CArray<CXTPDatePickerButton*, CXTPDatePickerButton*>
|
|
{
|
|
public:
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to retrieve the current count of visible
|
|
// buttons.
|
|
// Returns:
|
|
// Integer value that contains the current number of visible buttons
|
|
// that are in the collection.
|
|
// ----------------------------------------------------------------------
|
|
int GetVisibleButtonCount() const;
|
|
|
|
// ------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function finds buttons by their ID property.
|
|
// Remarks:
|
|
// Walks through the collection and looks for the button with the
|
|
// provided ID.
|
|
// Returns:
|
|
// A pointer to the CXTPDatePickerButton structure. NULL if no
|
|
// matching button ID is found.
|
|
// Parameters:
|
|
// nID : An int that contains the ID to search for.
|
|
// ------------------------------------------------------------------
|
|
CXTPDatePickerButton* Find(int nID) const;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function determines which button is affected by the
|
|
// mouse pointer.
|
|
// Parameters:
|
|
// point : Point to test.
|
|
// Remarks:
|
|
// Call this member function to test a mouse event occurring on one
|
|
// of the buttons rectangle areas. If no buttons are found then NULL
|
|
// is returned.
|
|
// Returns:
|
|
// The DatePicker button at the specified position, if any, otherwise
|
|
// NULL.
|
|
// ----------------------------------------------------------------------
|
|
CXTPDatePickerButton* HitTest(CPoint point) const;
|
|
};
|
|
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// Class CXTPDatePickerControl encapsulates the functionality of a
|
|
// date and time picker control.
|
|
// Remarks:
|
|
// A CXTPDatePickerControl object implements a calendar-like user
|
|
// interface. This provides the user with a very intuitive and
|
|
// recognizable method of entering or selecting a date. The control
|
|
// also provides the application with the means to obtain and set the
|
|
// date information in the control using existing data types. By
|
|
// default, the date picker control displays the current day and
|
|
// month. However, the user is able to scroll to the previous and
|
|
// next months and select a specific month and/or year. The user can
|
|
// select a date or a range of dates. Also, the user can change the
|
|
// display by:
|
|
//
|
|
// * Scrolling backward and forward, from month to month.
|
|
// * Clicking the Today text to select the current day.
|
|
// * Clicking the None text to remove the selection.
|
|
// * Picking a month or a year from a pop-up menu.
|
|
//
|
|
// The date picker control is customize by applying a variety of
|
|
// additional settings. Look at the control's class members list to
|
|
// see available customization options.<p/>
|
|
// The date picker control can display more than one month, and it
|
|
// can indicate special days (such as holidays) by modifying the
|
|
// date's style. Furthermore, CXTPDatePickerControl contains methods
|
|
// similar to the MFC CMonthCalCtrl. Use the methods in the same way
|
|
// as the MFC CMonthCalCtrl.
|
|
// See Also:
|
|
// CMonthCalCtrl
|
|
// ----------------------------------------------------------------------
|
|
class _XTP_EXT_CLASS CXTPDatePickerControl : public CWnd
|
|
{
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
friend class CXTPDatePickerItemMonth;
|
|
friend class CXTPDatePickerDaysCollection;
|
|
friend class CXTPCalendarController;
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
public:
|
|
//===========================================================================
|
|
// Summary:
|
|
// Enumeration of operational mouse modes.
|
|
// Remarks:
|
|
// DatePickerControl handles several Mouse states.
|
|
// This enumeration helps to clearly identify each of these states.
|
|
//===========================================================================
|
|
enum DatePickerMouseMode
|
|
{
|
|
mouseNothing, // No mouse activity by the user.
|
|
mouseScrollingLeft, // User pressed left scroll triangle and is holding the button.
|
|
mouseScrollingRight, // User pressed right scroll triangle and is holding the button.
|
|
mouseSelecting, // User pressed left mouse down on unselected day item and is now selecting a range of day items.
|
|
mouseDeselecting, // User pressed left mouse down on selected day item and is now de-selecting a range of day items.
|
|
mouseTrackingHeaderList // User is tracking pop-up month list window.
|
|
};
|
|
// Construction
|
|
public:
|
|
// -------------------------------------------------------------------------------------------------------------
|
|
// Summary:
|
|
// Default constructor is used to construct a CXTPDatePickerControl object.
|
|
// Remarks:
|
|
// Construct a CXTPDatePickerControl object in two steps. First, call
|
|
// the constructor CXTPDatePickerControl and then call the Create
|
|
// method, which initializes the window.
|
|
// Example:
|
|
// <code>
|
|
// // Declare a local CXTPDatePickerControl object.
|
|
// CXTPDatePickerControl myDatePicker;
|
|
//
|
|
// // Declare a dynamic CXTPDatePickerControl object.
|
|
// CXTPDatePickerControl* pMyDatePicker = new CXTPDatePickerControl();
|
|
//
|
|
// // Create a window
|
|
// if (!myDatePicker.Create(WS_CHILD | WS_TABSTOP | WS_VISIBLE, CRect(0, 0, 200, 200), this, ID_DATEPICKER_CONTROL))
|
|
// {
|
|
// TRACE(_T("Failed to create the date picker window\\n"));
|
|
// }
|
|
// </code>
|
|
// See Also:
|
|
// Create
|
|
// -------------------------------------------------------------------------------------------------------------
|
|
CXTPDatePickerControl();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPDatePickerControl object, handles cleanup
|
|
// and de-allocation.
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CXTPDatePickerControl();
|
|
|
|
public:
|
|
// -----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to create the Date Picker Control
|
|
// Window.
|
|
// Parameters:
|
|
// dwStyle : Specifies the window style attributes.
|
|
// rect : A RECT object that contains the coordinates of the
|
|
// window, in the client coordinates of pParentWnd.
|
|
// pParentWnd : A CWnd pointer to the parent window.
|
|
// nID : A UINT that contains the ID of the child window.
|
|
// pContext : A CCreateContext pointer that contains the create context
|
|
// of the window.
|
|
// Returns:
|
|
// Nonzero if successful. Otherwise 0.
|
|
// -----------------------------------------------------------------------
|
|
virtual BOOL Create(DWORD dwStyle,
|
|
const RECT& rect,
|
|
CWnd* pParentWnd,
|
|
UINT nID,
|
|
CCreateContext* pContext = NULL);
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function implements pop-up window behavior for the
|
|
// Date Picker control.
|
|
// Parameters:
|
|
// rect : Rectangle that contains the size and position of the
|
|
// window, in client coordinates of pParentWnd.
|
|
// pParentWnd : Pointer to the parent window.
|
|
// Returns:
|
|
// TRUE if successful, FALSE otherwise.
|
|
// See Also:
|
|
// IsModal
|
|
// ----------------------------------------------------------------------
|
|
virtual BOOL GoModal(const RECT& rect, CWnd* pParentWnd = NULL);
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// Is the control runs in modal mode.
|
|
// Returns:
|
|
// TRUE when the control is used as a pop-up window,
|
|
// FALSE otherwise.
|
|
// See Also:
|
|
// GoModal
|
|
// ----------------------------------------------------------------------
|
|
BOOL IsModal() const;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function returns a pointer to the associated paint
|
|
// manager.
|
|
// Remarks:
|
|
// Call this member function to obtain a pointer to the paint manager
|
|
// \object. The paint manager object is used for drawing the date
|
|
// picker window.
|
|
// Returns:
|
|
// Pointer to the paint manager object.
|
|
// See Also:
|
|
// SetTheme, SetPaintManager
|
|
// ----------------------------------------------------------------------
|
|
CXTPDatePickerPaintManager* GetPaintManager() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function redraws the control windows.
|
|
// Remarks:
|
|
// Call this member function to redraw all control windows
|
|
// according to the stored parameter values. The window will be
|
|
// updated immediately: CWnd::UpdateWindow() will be called.
|
|
// See Also:
|
|
// _RedrawControl
|
|
//-----------------------------------------------------------------------
|
|
virtual void RedrawControl();
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the new control drawing theme.
|
|
// Parameters:
|
|
// pPaintManager : Pointer of the new paint manager object or derived
|
|
// class like CXTPDatePickerThemeOffice2007.
|
|
// if NULL - the default paint manager object is set.
|
|
// Remarks:
|
|
// Call this member function to set the paint manager object that is
|
|
// used for drawing a date picker window.
|
|
// See Also:
|
|
// GetPaintManager
|
|
// ---------------------------------------------------------------------
|
|
void SetTheme(CXTPDatePickerPaintManager* pPaintManager = NULL);
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// This function is called to determine if AutoSize mode is set.
|
|
// Remarks:
|
|
// Call this member function to determine whether the control's auto
|
|
// size mode is enabled.
|
|
// Returns:
|
|
// A boolean value that specifies is AutoSize is enabled.<P/>
|
|
// TRUE if AutoSize is enabled.<P/>
|
|
// Otherwise return FALSE.
|
|
// See Also:
|
|
// SetAutoSize
|
|
// ---------------------------------------------------------------------
|
|
BOOL IsAutoSize() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This function sets the AutoSize mode.
|
|
// Parameters:
|
|
// bAuto - Boolean value. If bAuto is TRUE, then AutoSize
|
|
// is enabled. If this parameter is FALSE, then
|
|
// AutoSize is disabled.
|
|
// Remarks:
|
|
// Set AutoSize mode to TRUE if you want the control to automatically
|
|
// calculate the number of month items according to control's size.
|
|
// When this mode is enabled and there is enough space on control's
|
|
// client area, the control adds a row or a column of month items
|
|
// and centers them both horizontally and vertically.
|
|
// See Also: IsAutoSize
|
|
//-----------------------------------------------------------------------
|
|
void SetAutoSize(BOOL bAuto = TRUE);
|
|
|
|
// -------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the user defined day metrics callback
|
|
// function.
|
|
// Parameters:
|
|
// pFunc : Pointer to the callback function.
|
|
// pParam : Pointer to any user defined parameter provided to the
|
|
// callback function.
|
|
// Remarks:
|
|
// Call this member function to set up the user defined callback
|
|
// function to manipulate the 'special day's attributes'.
|
|
// See Also:
|
|
// PFNITEMMETRICS, GetCallbackDayMetrics, GetDayMetrics
|
|
// -------------------------------------------------------------------
|
|
virtual void SetCallbackDayMetrics(PFNITEMMETRICS pFunc, void* pParam = NULL);
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function returns the day metrics callback function.
|
|
// Remarks:
|
|
// Call this member function to obtain a pointer to the user defined
|
|
// day metrics callback function.
|
|
// Returns:
|
|
// Pointer to the callback function.
|
|
// See Also:
|
|
// PFNITEMMETRICS, SetCallbackDayMetrics, GetDayMetrics
|
|
// ---------------------------------------------------------------------
|
|
PFNITEMMETRICS GetCallbackDayMetrics() const;
|
|
|
|
// --------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function returns the day item drawing metrics.
|
|
// Parameters:
|
|
// dtDay : Reference to the DateTime value to check.
|
|
// pDayMetics : Pointer to the day metrics structure.
|
|
// Remarks:
|
|
// Determines whether or not a given date is special. This function
|
|
// calls a callback function to make this determination.
|
|
// See Also:
|
|
// GetCallbackDayMetrics, SetCallbackDayMetrics
|
|
// --------------------------------------------------------------------
|
|
virtual void GetDayMetrics(COleDateTime& dtDay, XTP_DAYITEM_METRICS* pDayMetics);
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the day of the week that is displayed in
|
|
// the leftmost column of the calendar.
|
|
// Parameters:
|
|
// nDay : An integer value representing which day is 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.
|
|
// See Also:
|
|
// GetFirstDayOfWeek
|
|
// ----------------------------------------------------------------------
|
|
void SetFirstDayOfWeek(int nDay);
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function obtains the first day of the week that is
|
|
// displayed in the leftmost column of the calendar.
|
|
// Returns:
|
|
// An integer value that represents the first day of the week. The
|
|
// days of the week are represented as integers, as follows.
|
|
// * 1 - Sunday
|
|
// * 2 - Monday
|
|
// * 3 - Tuesday
|
|
// * 4 - Wednesday
|
|
// * 5 - Thursday
|
|
// * 6 - Friday
|
|
// * 7 - Saturday
|
|
// See Also:
|
|
// SetFirstDayOfWeek
|
|
// ----------------------------------------------------------------------
|
|
int GetFirstDayOfWeek() const;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the required number of this year days
|
|
// in the first week of the year.
|
|
// Parameters:
|
|
// nDays : An integer value representing the required number of
|
|
// days of the new year in the first week of the year.
|
|
// The value should be between 1 (default) and 7 (full week).
|
|
// See Also:
|
|
// GetFirstWeekOfYearDay
|
|
// Example:
|
|
// <code>
|
|
// // Setup German style of week numbers calculation.
|
|
// pMyDatePicker->SetFirstWeekOfYearDays(4);
|
|
// </code>
|
|
// ----------------------------------------------------------------------
|
|
void SetFirstWeekOfYearDays(int nDays);
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function obtains the current required number of year days
|
|
// in the first week of the year.
|
|
// Returns:
|
|
// An integer value that represents the required number of
|
|
// days of the new year in the first week of this year.
|
|
// The value should be between 1 (by default) and 7 (full week).
|
|
// See Also:
|
|
// SetFirstWeekOfYearDays
|
|
// ----------------------------------------------------------------------
|
|
int GetFirstWeekOfYearDays() const;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This function sets visibility for the "Today" and "None" buttons.
|
|
// Parameters:
|
|
// bShowToday : Provide TRUE to show the "Today" button, or FALSE to
|
|
// hide it.
|
|
// bShowNone : Provide TRUE to show the "None" button, or FALSE to
|
|
// hide it.
|
|
// Remarks:
|
|
// Call this member function to hide or show any of the control's
|
|
// service buttons.
|
|
// See Also:
|
|
// IsTodayButtonVisible, IsNoneButtonVisible
|
|
// ----------------------------------------------------------------------
|
|
virtual void SetButtonsVisible(BOOL bShowToday, BOOL bShowNone);
|
|
|
|
// ------------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to obtain the value of the visibility
|
|
// flag for the "Today" button.
|
|
// Remarks:
|
|
// Call this member function to determine the visibility of the
|
|
// "Today" service button.
|
|
// Returns:
|
|
// A boolean value that specifies if the "Today" button is visible.<p/>
|
|
// TRUE if the "Today" button is visible.<p/>
|
|
// Otherwise FALSE.
|
|
// See Also:
|
|
// IsNoneButtonVisible, SetButtonsVisible
|
|
// ------------------------------------------------------------------------
|
|
virtual BOOL IsTodayButtonVisible();
|
|
|
|
// -----------------------------------------------------------------------
|
|
// Summary:
|
|
// This function returns the boolean visibility flag of the "None"
|
|
// button.
|
|
// Remarks:
|
|
// Call this member function to determine the visibility of the
|
|
// "None" service button.
|
|
// Returns:
|
|
// A boolean value that specifies if the "None" button is visible.<p/>
|
|
// TRUE when the "None" button is visible.<p/>
|
|
// Otherwise FALSE.
|
|
// See Also:
|
|
// IsTodayButtonVisible, SetButtonsVisible
|
|
// -----------------------------------------------------------------------
|
|
virtual BOOL IsNoneButtonVisible();
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to enable or disable highlighting of the
|
|
// "Today" cell.
|
|
// Parameters:
|
|
// bValue : Boolean value determines if the "Today" cell is
|
|
// highlighted.
|
|
// Remarks:
|
|
// The "Today" cell is determined and changed using the SetToday and
|
|
// GetToday member functions. When highlighting is enabled, the cell
|
|
// is surrounded by a rectangle frame of the specific color.
|
|
// See Also:
|
|
// GetHighlightToday, SetToday, GetToday,
|
|
// CXTPDatePickerPaintManager::GetHighlightTodayColor
|
|
// ----------------------------------------------------------------------
|
|
void SetHighlightToday(BOOL bValue);
|
|
|
|
// -------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to determine whether the "Today" cell
|
|
// highlighting is enabled or disabled.
|
|
// Remarks:
|
|
// This member function returns a boolean flag that specifies the
|
|
// "Today" button highlighting mode.
|
|
// Returns:
|
|
// A BOOL that indicates if the "Today" cell is highlighted.<p/>
|
|
// TRUE if the "Today" cell is highlighted. Otherwise FALSE.
|
|
// See Also:
|
|
// GetHighlightToday, SetToday, GetToday,
|
|
// CXTPDatePickerPaintManager::GetHighlightTodayColor
|
|
// -------------------------------------------------------------------
|
|
BOOL GetHighlightToday() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member to set right-to-left mode.
|
|
// Parameters:
|
|
// bRightToLeft - TRUE to set right-to-left reading-order properties.
|
|
//-----------------------------------------------------------------------
|
|
virtual void SetLayoutRTL(BOOL bRightToLeft);
|
|
|
|
// ------------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to show or hide the week numbers.
|
|
// Parameters:
|
|
// bValue : Boolean value determines whether week numbers are visible.
|
|
// Remarks:
|
|
// Week numbers are shown for each week in each month at the very
|
|
// left column of the month, separated by the vertical line from the
|
|
// \other week days. This member function controls the visibility
|
|
// mode of the week numbers.
|
|
// See Also:
|
|
// GetShowWeekNumbers,
|
|
// CXTPDatePickerPaintManager::GetWeekNumbersBackColor,
|
|
// CXTPDatePickerPaintManager::GetWeekNumbersTextColor,
|
|
// CXTPDatePickerPaintManager::GetWeekNumbersTextFont
|
|
// ------------------------------------------------------------------------
|
|
virtual void SetShowWeekNumbers(BOOL bValue);
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to determine if the week numbers are
|
|
// visible.
|
|
// Remarks:
|
|
// The week numbers are shown for each week in each month as the very
|
|
// left column of the month, separated by the vertical line from the
|
|
// \other week days. This member function determines if the week
|
|
// numbers are shown.
|
|
// Returns:
|
|
// Boolean value that determines if the week numbers are set to be
|
|
// shown.<p/>
|
|
// TRUE - If the week numbers are visible.<p/>
|
|
// FALSE - If the week numbers are not visible.
|
|
// See Also:
|
|
// SetShowWeekNumbers,
|
|
// CXTPDatePickerPaintManager::GetWeekNumbersBackColor,
|
|
// CXTPDatePickerPaintManager::GetWeekNumbersTextColor,
|
|
// CXTPDatePickerPaintManager::GetWeekNumbersTextFont
|
|
// ----------------------------------------------------------------------
|
|
BOOL GetShowWeekNumbers() const;
|
|
|
|
// -------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to show or hide non-month days.
|
|
// Parameters:
|
|
// bShow : Boolean value determines if the non month days are
|
|
// shown.
|
|
// TRUE If the non\-month days are visible.
|
|
// FALSE If the non\-month days are not visible.
|
|
// Remarks:
|
|
// Non-month days are shown in a special color or font. Non-month
|
|
// days are shown just before and after regular days of a specific
|
|
// month.
|
|
// Note:
|
|
// For a control showing more than 1 month, non-month days will be
|
|
// shown before the first month, and after the last one.
|
|
// See Also:
|
|
// GetShowNonMonthDays,
|
|
// CXTPDatePickerPaintManager::GetNonMonthDayBackColor,
|
|
// CXTPDatePickerPaintManager::GetNonMonthDayTextColor,
|
|
// CXTPDatePickerPaintManager::GetNonMonthDayTextFont
|
|
// -------------------------------------------------------------------
|
|
void SetShowNonMonthDays(BOOL bShow);
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to determine if the non-month days are
|
|
// visible.
|
|
// Remarks:
|
|
// Non-month days are shown in a special color or font just before
|
|
// and after regular days of a specific month.
|
|
// Note:
|
|
// For a control showing more than 1 month, non-month days are shown
|
|
// before the first month, and after the last month.
|
|
// Returns:
|
|
// A boolean value that specifies if the "non-month days" are
|
|
// visible.<p/>
|
|
// TRUE if non-month days are visible.<p/>
|
|
// FALSE otherwise.
|
|
// See Also:
|
|
// SetShowNonMonthDays,
|
|
// CXTPDatePickerPaintManager::GetNonMonthDayBackColor,
|
|
// CXTPDatePickerPaintManager::GetNonMonthDayTextColor,
|
|
// CXTPDatePickerPaintManager::GetNonMonthDayTextFont
|
|
// ---------------------------------------------------------------------
|
|
BOOL GetShowNonMonthDays() const;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set borders style
|
|
// around the control.
|
|
// Parameters:
|
|
// borderStyle - XTPDatePickerBorderStyle value determines whether border style
|
|
// See Also:
|
|
// GetBorderStyle, CXTPDatePickerPaintManager::DrawBorder, XTPDatePickerBorderStyle
|
|
// ----------------------------------------------------------------------
|
|
void SetBorderStyle(XTPDatePickerBorderStyle borderStyle);
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to determine if the border is
|
|
// visible.
|
|
// Returns:
|
|
// XTPDatePickerBorderStyle value that specifies the border style.<p/>
|
|
// See Also:
|
|
// SetBorderStyle, CXTPDatePickerPaintManager::DrawBorder, XTPDatePickerBorderStyle
|
|
// ----------------------------------------------------------------------
|
|
XTPDatePickerBorderStyle GetBorderStyle() const;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to set the number of months in the
|
|
// control's grid.
|
|
// Parameters:
|
|
// nRows : int that contains the new rows count value.
|
|
// nCols : int that contains the new columns count value.
|
|
// bRestrictMode : BOOL flag used for resizing
|
|
// Remarks:
|
|
// This member function is called in the AutoSize mode. It sets the
|
|
// new number of columns and rows in the control's months grid. Also,
|
|
// the function redraws each month within the existing control's
|
|
// coordinates, reducing or enlarging the size of each month item as
|
|
// necessary.
|
|
// Note:
|
|
// This function does nothing when AutoSize mode is enabled.
|
|
// See Also:
|
|
// GetRows, GetCols
|
|
// ----------------------------------------------------------------------
|
|
virtual void SetGridSize(int nRows, int nCols, BOOL bRestrictMode = FALSE);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to obtain the number of rows in the
|
|
// months grid.
|
|
// Returns:
|
|
// The number of rows in the control's months grid.
|
|
// See Also: GetCols, SetGridSize
|
|
//-----------------------------------------------------------------------
|
|
int GetRows() const;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to obtain the number of columns in the
|
|
// months grid.
|
|
// Returns:
|
|
// An int that contains the number of columns in the control's months
|
|
// grid.
|
|
// See Also:
|
|
// GetRows, SetGridSize
|
|
// ----------------------------------------------------------------------
|
|
int GetCols() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function finds the month item at the provided point.
|
|
// Parameters:
|
|
// ptMouse - The mouse coordinates to test.
|
|
// pMCHitTest - A pointer to a <b>MCHITTESTINFO</b> structure
|
|
// containing hit testing points for the
|
|
// date picker control.
|
|
// Remarks:
|
|
// Call this function to retrieve a pointer to the month item
|
|
// at the specified position.
|
|
//
|
|
// This HitTest(PMCHITTESTINFO pMCHitTest) function determines which date portion of the
|
|
// picker control, if any, is at a specified position. It implements the behavior of the
|
|
// CMonthCalCtrl::HitTest function.
|
|
// Returns:
|
|
// A pointer to the month item where the mouse was clicked.
|
|
// Returns NULL if the mouse was clicked outside the months grid area.
|
|
//
|
|
// HitTest(PMCHITTESTINFO pMCHitTest) returns a DWORD value. Equal to the uHit member of the MCHITTESTINFO structure.
|
|
// See Also: HitTest, CMonthCalCtrl::HitTest, MCHITTESTINFO
|
|
//-----------------------------------------------------------------------
|
|
virtual CXTPDatePickerItemMonth* HitTest(CPoint ptMouse) const;
|
|
virtual DWORD HitTest(PMCHITTESTINFO pMCHitTest) const; // <combine CXTPDatePickerControl::HitTest@CPoint@const>
|
|
|
|
// --------------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function scrolls the control's months grid to the left
|
|
// by the specified number of months.
|
|
// Parameters:
|
|
// nMonthCount : Integer value that specifies how many months to scroll.
|
|
// The default value is 1.
|
|
// Remarks:
|
|
// Call this member function to scroll the months grid to the left by
|
|
// nMonthCount positions.
|
|
// See Also:
|
|
// ScrollRight
|
|
// --------------------------------------------------------------------------
|
|
virtual void ScrollLeft(int nMonthCount = 1);
|
|
|
|
// --------------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function scrolls the control's months grid to the
|
|
// right by the specified amount of months.
|
|
// Parameters:
|
|
// nMonthCount : Integer value that specifies how many months to scroll.
|
|
// The default value is 1.
|
|
// Remarks:
|
|
// Call this member function to scroll the months grid to the right
|
|
// by nMonthCount positions.
|
|
// See Also:
|
|
// ScrollLeft
|
|
// --------------------------------------------------------------------------
|
|
virtual void ScrollRight(int nMonthCount = 1);
|
|
|
|
// -----------------------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to send notifications to the parent
|
|
// window.
|
|
// Parameters:
|
|
// nMessage : An int that contains the identifier of the message. See remarks
|
|
// section for a list of valid values.
|
|
// pNMHDR : Pointer to the XTP_NC_DATEPICKER_BUTTON notification
|
|
// structure.
|
|
// Remarks:
|
|
// The following values are valid for nMessage:
|
|
// * XTP_NC_DATEPICKER_BUTTON_CLICK - Notifies that one of date
|
|
// picker buttons was clicked.
|
|
// * XTP_NC_DATEPICKER_SELECTION_CHANGED - Notifies that the date
|
|
// picker selection has changed.
|
|
// This function notifies the parent window that something happened.
|
|
// For the example of how to catch these messages see below.
|
|
// Example:
|
|
// <code>
|
|
// // First, add the message handler to your message map.
|
|
// ON_NOTIFY(XTP_NC_DATEPICKER_BUTTON_CLICK, 1000, OnButtonPressed)
|
|
//
|
|
// // Then implement the message handler like the example below
|
|
// void YourDlg::OnButtonPressed(NMHDR* pNotifyStruct, LRESULT*)
|
|
// {
|
|
// XTP_NC_DATEPICKER_BUTTON* pNMButton = (XTP_NC_DATEPICKER_BUTTON*)pNotifyStruct;
|
|
//
|
|
// switch (pNMButton-\>nID)
|
|
// {
|
|
// case XTP_IDS_DATEPICKER_TODAY:
|
|
// TRACE(_T("TODAY BUTTON PRESSEDn"));
|
|
// break;
|
|
// case XTP_IDS_DATEPICKER_NONE:
|
|
// TRACE(_T("NONE BUTTON PRESSEDn"));
|
|
// break;
|
|
// }
|
|
// }
|
|
// </code>
|
|
// Returns:
|
|
// An LRESULT that is used to indicate the success of the function. Non-zero
|
|
// if the message is sent successfully, zero otherwise.
|
|
// -----------------------------------------------------------------------------------
|
|
virtual LRESULT SendMessageToParent(int nMessage, NMHDR* pNMHDR = NULL);
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// This function checks a specific date to determine if it is
|
|
// contained in the control's selection.
|
|
// Parameters:
|
|
// dtDay : A date to check.
|
|
// Remarks:
|
|
// Call this member function to determine whether dtDay is selected.
|
|
// Returns:
|
|
// A boolean value that specifies if the date is contained in the
|
|
// current selection.<p/>
|
|
// TRUE when the day is selected.<p/>
|
|
// Otherwise FALSE.
|
|
// See Also:
|
|
// Select, Deselect
|
|
// ---------------------------------------------------------------------
|
|
virtual BOOL IsSelected(const COleDateTime& dtDay) const;
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// This function checks a specific date to determine if it is
|
|
// focused.
|
|
// Parameters:
|
|
// dtDay : A date to check.
|
|
// Remarks:
|
|
// Focused item is used only for the keyboard navigation and selecting.
|
|
// It is initialized by keyboard using first day of the current
|
|
// selection or if selection is empty the first day of the first
|
|
// visible month is used.
|
|
// Focused item is cleared by mouse or by set selection externally.
|
|
// Returns:
|
|
// TRUE when the day is focused, FALSE otherwise.
|
|
// See Also:
|
|
// ClearFocus
|
|
// ---------------------------------------------------------------------
|
|
virtual BOOL IsFocused(const COleDateTime& dtDay) const;
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// This function clear focused attribute if it is set.
|
|
// Remarks:
|
|
// Focused item is used only for the keyboard navigation and selecting.
|
|
// It is initialized by keyboard using first day of the current
|
|
// selection or if selection is empty the first day of the first
|
|
// visible month is used.
|
|
// Focused item is cleared by mouse or by set selection externally.
|
|
// See Also:
|
|
// IsFocused
|
|
// ---------------------------------------------------------------------
|
|
virtual void ClearFocus();
|
|
|
|
// -----------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to select a specific day.
|
|
// Parameters:
|
|
// dtDay : Date to be selected.
|
|
// Remarks:
|
|
// This function determines if one more item can be added to the
|
|
// collection of selected days. If yes, then the selected day is
|
|
// added to the list of selected items.
|
|
// See Also:
|
|
// Deselect, IsSelected
|
|
// -----------------------------------------------------------------
|
|
virtual void Select(const COleDateTime& dtDay);
|
|
|
|
// --------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to de-select the specified day.
|
|
// Parameters:
|
|
// dtDay : Date to be deselected.
|
|
// Remarks:
|
|
// This member function removes the provided day from the control's
|
|
// selected days collection.
|
|
// See Also:
|
|
// Select, IsSelected
|
|
// --------------------------------------------------------------------
|
|
virtual void Deselect(const COleDateTime& dtDay);
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to ensure that the COleDateTime item is
|
|
// visible.
|
|
// Parameters:
|
|
// dtDate : The date to test.
|
|
// Remarks:
|
|
// If necessary, the function scrolls the month grid on the control
|
|
// to make the day visible.
|
|
// See Also:
|
|
// EnsureVisibleSelection
|
|
// ---------------------------------------------------------------------
|
|
virtual void EnsureVisible(const COleDateTime& dtDate);
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to ensure that the selection range is
|
|
// visible.
|
|
// Remarks:
|
|
// If necessary, the function scrolls the month grid on the control
|
|
// to make all selected days visible.
|
|
// See Also:
|
|
// EnsureVisible, EnsureVisibleFocus
|
|
// ---------------------------------------------------------------------
|
|
virtual void EnsureVisibleSelection();
|
|
|
|
// Summary:
|
|
// Call this member function to ensure that the focused item is visible.
|
|
// Remarks:
|
|
// Focused item is used only for the keyboard navigation and selecting.
|
|
// It is initialized by keyboard using first day of the current
|
|
// selection or if selection is empty the first day of the first
|
|
// visible month is used.
|
|
// Focused item is cleared by mouse or by set selection externally.
|
|
// See Also:
|
|
// EnsureVisible, EnsureVisibleSelection
|
|
// ---------------------------------------------------------------------
|
|
virtual void EnsureVisibleFocus();
|
|
|
|
// ------------------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the user-defined month name.
|
|
// Parameters:
|
|
// nMonth : An int that contains the Month number corresponding to the
|
|
// month name. i.e. 1 = January, 2 = February, 3 = March, ...
|
|
// Valid values are from 1 to 12.
|
|
// strMonthName : A CString that contains the New month name.
|
|
// Remarks:
|
|
// Use this function to change the shown month name to any preferred
|
|
// \or localized values.
|
|
// See Also:
|
|
// GetMonthName, SetDayOfWeekName, GetDayOfWeekName
|
|
// ------------------------------------------------------------------------------
|
|
void SetMonthName(int nMonth, LPCTSTR strMonthName);
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function returns the month name of the given integer
|
|
// value.
|
|
// Parameters:
|
|
// nMonth : Month number. The valid range is 1 \<= nMonth \>= 12.
|
|
// Remarks:
|
|
// Call this member function to retrieve the name of the month which
|
|
// was previously set by SetMonthName function. If month name was not
|
|
// set by SetMonthName function, it will return the default value,
|
|
// which is the default localized month name.
|
|
// Returns:
|
|
// If nMonth is a valid integer value, then the function returns the
|
|
// name of the month. If nMonth is not valid, then the function
|
|
// \returns an empty string.
|
|
// See Also:
|
|
// SetMonthName, SetDayOfWeekName, GetDayOfWeekName
|
|
// ----------------------------------------------------------------------
|
|
CString GetMonthName(int nMonth) const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the user-defined DayOfWeek name.
|
|
// Parameters:
|
|
// nDayOfWeek - DayOfWeek number to set new name for.
|
|
// strDayOfWeekName - New DayOfWeek name.
|
|
// Remarks:
|
|
// Valid day-of-week range is between 1 and 7, where
|
|
// 1 = Sunday, 2 = Monday, and so on.
|
|
// See Also: GetDayOfWeekName, SetMonthName, GetMonthName
|
|
//-----------------------------------------------------------------------
|
|
void SetDayOfWeekName(int nDayOfWeek, LPCTSTR strDayOfWeekName);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function returns the DayOfWeek name associated
|
|
// with the integer value of nDayOfWeek.
|
|
// Parameters:
|
|
// nDayOfWeek - DayOfWeek number.
|
|
// Remarks:
|
|
// Valid day-of-week range is between 1 and 7, where
|
|
// 1 = Sunday, 2 = Monday, and so on.
|
|
// Returns:
|
|
// If nDayOfWeek is a valid integer value, then the function
|
|
// returns the name of the week associated with the integer value
|
|
// of nDayOfWeek. If nDayOfWeek is not a valid integer value, then
|
|
// the function returns an empty string.
|
|
// See Also: SetDayOfWeekName, SetMonthName, GetMonthName
|
|
//-----------------------------------------------------------------------
|
|
CString GetDayOfWeekName(int nDayOfWeek) const;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function retrieves date information representing the
|
|
// upper and lower limits of the date range currently selected by the
|
|
// user.
|
|
// Parameters:
|
|
// refMinRange : A reference to a COleDateTime object containing the
|
|
// minimum date allowed.
|
|
// refMaxRange : A reference to a COleDateTime object containing the
|
|
// maximum date allowed.
|
|
// Remarks:
|
|
// This member function implements the behavior of the
|
|
// CMonthCalCtrl::GetSelRange function.
|
|
// Returns:
|
|
// Nonzero if successful. Otherwise 0.
|
|
// See Also:
|
|
// SetSelRange, CMonthCalCtrl::GetSelRange
|
|
// ----------------------------------------------------------------------
|
|
virtual BOOL GetSelRange(COleDateTime& refMinRange, COleDateTime& refMaxRange) const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the selection for a date picker
|
|
// control to a given date range.
|
|
// Parameters:
|
|
// refMinRange - A reference to a COleDateTime object containing the
|
|
// date at the lowest end of the range.
|
|
// refMaxRange - A reference to a COleDateTime object containing the
|
|
// date at the highest end of the range.
|
|
// Remarks:
|
|
// This member function implements the behavior of the
|
|
// CMonthCalCtrl::SetSelRange function.
|
|
//
|
|
// Please note that this method doesn't refresh the control, and in
|
|
// order to update control's picture you'll have to call RedrawControl
|
|
// method after changing a selection.
|
|
// Returns:
|
|
// Nonzero if successful. Otherwise 0.
|
|
// See Also: GetSelRange, CMonthCalCtrl::SetSelRange
|
|
//-----------------------------------------------------------------------
|
|
virtual BOOL SetSelRange(const COleDateTime& refMinRange, const COleDateTime& refMaxRange);
|
|
|
|
// --------------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function retrieves the minimum size required to show a
|
|
// full month in the date picker control or a
|
|
// specified number of full month items in a date picker control.
|
|
// Parameters:
|
|
// pRect : A pointer to a RECT structure that receives the bounding
|
|
// rectangle information. This parameter must be a valid address
|
|
// and cannot be NULL.
|
|
// nRows : A number of months in a row inside the calculated rectangle.
|
|
// nCols : A number of months in a column inside the calculated rectangle.
|
|
// Remarks:
|
|
// This member function implements the behavior of the
|
|
// CMonthCalCtrl::GetMinReqRect function.
|
|
//
|
|
// GetMinReqRect(RECT* pRect, int nRows, int nCols) retrieves the minimum
|
|
// size required to show a specified number of full month items in
|
|
// a date picker control. The functionality implemented by this function is similar to the
|
|
// CMonthCalCtrl::GetMinReqRect, but instead of calculating a
|
|
// rectangle size for 1 month only, it can also calculate a rectangle
|
|
// size for any specified number of month items.
|
|
// Returns:
|
|
// If successful, this member function returns nonzero and <i>pRect</i>
|
|
// receives the applicable bounding rectangle information. If
|
|
// unsuccessful, the member function returns 0.
|
|
// See Also:
|
|
// CMonthCalCtrl::GetMinReqRect
|
|
// --------------------------------------------------------------------------
|
|
virtual BOOL GetMinReqRect(RECT* pRect) const;
|
|
virtual BOOL GetMinReqRect(RECT* pRect, int nRows, int nCols) const; // <combine CXTPDatePickerControl::GetMinReqRect@RECT*@const>
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function adjusts the date picker control to the
|
|
// minimum size required to display one month.
|
|
// Parameters:
|
|
// bRepaint : A BOOL that specifies whether the control is to be
|
|
// repainted. By default, TRUE. If FALSE, no repainting occurs.
|
|
// Remarks:
|
|
// Calling SizeMinReq successfully displays the entire date picker
|
|
// control for one month's calendar.
|
|
// Returns:
|
|
// Nonzero if the date picker control is sized to its minimum.
|
|
// Otherwise 0.
|
|
// See Also:
|
|
// GetMinReqRect, CMonthCalCtrl::SizeMinReq
|
|
// ----------------------------------------------------------------------------
|
|
virtual BOOL SizeMinReq(BOOL bRepaint = TRUE);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function retrieves the scroll rate for the date
|
|
// picker control.
|
|
// Remarks:
|
|
// This member function implements the behavior of the
|
|
// CMonthCalCtrl::GetMonthDelta function.
|
|
// The scroll rate is the number of months that the control
|
|
// moves its display when the user clicks a scroll button once.
|
|
// Returns:
|
|
// The scroll rate for the date picker control.
|
|
// See Also: SetMonthDelta, CMonthCalCtrl::GetMonthDelta
|
|
//-----------------------------------------------------------------------
|
|
int GetMonthDelta() const;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the scroll rate for the date picker
|
|
// control.
|
|
// Parameters:
|
|
// iDelta : The number of months 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.
|
|
// Remarks:
|
|
// This member function implements the behavior of the
|
|
// CMonthCalCtrl::SetMonthDelta function.
|
|
// See Also:
|
|
// GetMonthDelta, CMonthCalCtrl::SetMonthDelta
|
|
// ----------------------------------------------------------------------------
|
|
void SetMonthDelta(int iDelta);
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function retrieves the system time as indicated by the
|
|
// currently-selected date.
|
|
// Parameters:
|
|
// refDateTime : A reference to a COleDateTime object. Receives the
|
|
// currently selected time.
|
|
// Remarks:
|
|
// This member function fails if more than 1 date is selected.
|
|
// Returns:
|
|
// A BOOL that indicates the success of the function.<p/>
|
|
// TRUE if the function is successfully able to retrieve the system
|
|
// time.<p/>
|
|
// FALSE if more than one date is selected.
|
|
// See Also:
|
|
// SetCurSel, CMonthCalCtrl::GetCurSel
|
|
// ----------------------------------------------------------------------
|
|
virtual BOOL GetCurSel(COleDateTime& refDateTime) const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the currently selected date for the
|
|
// date picker control.
|
|
// Parameters:
|
|
// refDateTime - A reference to a COleDateTime object, which
|
|
// contains a date to select.
|
|
// Remarks:
|
|
// This member function clears the selection of a date picker
|
|
// control and selects a specified date.
|
|
// Returns:
|
|
// Nonzero if successful. Otherwise 0.
|
|
// See Also: GetCurSel, CMonthCalCtrl::GetCurSel
|
|
//-----------------------------------------------------------------------
|
|
virtual BOOL SetCurSel(const COleDateTime& refDateTime);
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function retrieves the current maximum number of days
|
|
// that can be selected in a date picker control.
|
|
// Remarks:
|
|
// This member function implements the behavior of the
|
|
// CMonthCalCtrl::GetMaxSelCount function.
|
|
// Returns:
|
|
// An integer value that represents the total number of days that can
|
|
// be selected for the control. XTP_SELECTION_INFINITE if selection
|
|
// is not bounded.
|
|
// See Also:
|
|
// SetMaxSelCount, CMonthCalCtrl::GetMaxSelCount, AllowNoncontinuousSelection
|
|
// ----------------------------------------------------------------------
|
|
int GetMaxSelCount() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the maximum number of days that can be
|
|
// selected in a date picker control.
|
|
// Parameters:
|
|
// nMax : The value that is set to represent the maximum number of
|
|
// selectable days. XTP_SELECTION_INFINITE if selection is not
|
|
// bounded.
|
|
// Remarks:
|
|
// This member function implements the behavior of the
|
|
// CMonthCalCtrl::SetMaxSelCount function.
|
|
// See also:
|
|
// GetMaxSelCount, AllowNoncontinuousSelection, CMonthCalCtrl::SetMaxSelCount
|
|
//-----------------------------------------------------------------------
|
|
void SetMaxSelCount(int nMax = XTP_SELECTION_INFINITE);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the flag which shows whether control
|
|
// allows non-continuous days selection or not.
|
|
// Parameters:
|
|
// bAllow - TRUE to allow non-continuous days selection (default value),
|
|
// FALSE to disallow.
|
|
// Remarks:
|
|
// Allowing continuous days selection means that user will be able
|
|
// to select only a single days interval between 2 dates, where all
|
|
// dates will be selected inside.
|
|
// Non-continuous days selection means that user will be able to
|
|
// select any specific dates totally up to MaxSelCount count.
|
|
// See Also:
|
|
// IsAllowNoncontinuousSelection, SetMaxSelCount, GetMaxSelCount
|
|
//-----------------------------------------------------------------------
|
|
void AllowNoncontinuousSelection(BOOL bAllow = TRUE);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function returns the flag which shows whether control
|
|
// allows non-continuous days selection or not.
|
|
// Remarks:
|
|
// Allowing continuous days selection means that user will be able
|
|
// to select only a single days interval between 2 dates, where all
|
|
// dates will be selected inside.
|
|
// Non-continuous days selection means that user will be able to
|
|
// select any specific dates totally up to MaxSelCount count.
|
|
// Returns:
|
|
// TRUE when non-continuous days selection is allowed,
|
|
// FALSE otherwise.
|
|
// See Also:
|
|
// AllowNoncontinuousSelection, SetMaxSelCount, GetMaxSelCount
|
|
//-----------------------------------------------------------------------
|
|
BOOL IsAllowNoncontinuousSelection() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Determines if the multiple selection mode is enabled.
|
|
// Returns:
|
|
// TRUE if the multiple selection mode is enabled.
|
|
// See Also: SetMultiSelectionMode
|
|
//-----------------------------------------------------------------------
|
|
BOOL IsMultiSelectionMode() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Enables/disables the multiple selection mode for the control.
|
|
// Parameters:
|
|
// bMultiSelectionMode - TRUE for enabling, FALSE for disabling.
|
|
// Remarks:
|
|
// Sets the flag that determines whether the report is in multiple selection mode.
|
|
// See Also: IsMultiSelectionMode
|
|
//-----------------------------------------------------------------------
|
|
void SetMultiSelectionMode(BOOL bMultiSelectionMode);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function retrieves the date information for the date
|
|
// specified as "Today" for the date picker control.
|
|
// Parameters:
|
|
// refDateTime : A reference to a COleDateTime object indicating the
|
|
// current day.
|
|
// Remarks:
|
|
// This member function implements the behavior of the
|
|
// CMonthCalCtrl::GetToday function.
|
|
// Returns:
|
|
// Nonzero if successful. Otherwise 0.
|
|
// See Also:
|
|
// GetHighlightToday, SetHighlightToday, SetToday,
|
|
// CMonthCalCtrl::GetToday
|
|
//-----------------------------------------------------------------------
|
|
virtual BOOL GetToday(COleDateTime& refDateTime) const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// 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.
|
|
// Remarks:
|
|
// This member function implements the behavior of the
|
|
// CMonthCalCtrl::SetToday function.
|
|
// See Also: GetHighlightToday, SetHighlightToday, SetToday, GetToday,
|
|
// CMonthCalCtrl::SetToday
|
|
//-----------------------------------------------------------------------
|
|
virtual void SetToday(const COleDateTime& refDateTime);
|
|
|
|
// --------------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function retrieves the current minimum and maximum
|
|
// dates set in a date picker control.
|
|
// Parameters:
|
|
// pMinRange : A pointer to a COleDateTime object containing the date at
|
|
// the lowest end of the range.
|
|
// pMaxRange : A pointer to a COleDateTime object containing the date at
|
|
// the highest end of the range.
|
|
// Remarks:
|
|
// This member function implements the behavior of the
|
|
// CMonthCalCtrl::GetRange function.
|
|
// Returns:
|
|
// A DWORD that can be zero (no limits are set) or a combination of
|
|
// the following values that specify limit information.
|
|
//
|
|
// * <b>GDTR_MAX</b> - A maximum limit is set for the control.
|
|
// pMaxRange is valid and contains the applicable date information.
|
|
// * <b>GDTR_MIN</b> - A minimum limit is set for the control.
|
|
// pMinRange is valid and contains the applicable date information.
|
|
// Example:
|
|
// See CMonthCalCtrl::GetRange documentation for the example.
|
|
// See Also:
|
|
// SetRange, CMonthCalCtrl::GetRange
|
|
// --------------------------------------------------------------------------
|
|
virtual DWORD GetRange(COleDateTime* pMinRange, COleDateTime* pMaxRange) const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets the minimum and maximum allowable
|
|
// dates for a date picker control.
|
|
// Parameters:
|
|
// pMinRange - A pointer to a COleDateTime object containing the
|
|
// date at the lowest end of the range.
|
|
// pMaxRange - A pointer to a COleDateTime object containing the
|
|
// date at the highest end of the range.
|
|
// Remarks:
|
|
// This member function implements the behavior of the
|
|
// CMonthCalCtrl::GetRange function.
|
|
// Returns:
|
|
// Nonzero if successful. Otherwise 0.
|
|
// See Also: GetRange, CMonthCalCtrl::SetRange
|
|
//-----------------------------------------------------------------------
|
|
virtual BOOL SetRange(const COleDateTime* pMinRange, const COleDateTime* pMaxRange);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function retrieves date information representing
|
|
// the high and low limits of a date picker control's display.
|
|
// Parameters:
|
|
// refMinRange - A reference to a COleDateTime object containing
|
|
// the minimum date allowed.
|
|
// refMaxRange - A reference to a 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
|
|
//
|
|
// * <b>GMR_DAYSTATE</b> - Include preceding and
|
|
// trailing months of visible range that are only
|
|
// partially displayed.
|
|
// * <b>GMR_VISIBLE</b> - Include only those months
|
|
// that are entirely displayed.
|
|
//
|
|
// Remarks:
|
|
// This member function implements the behavior of the
|
|
// CMonthCalCtrl::GetMonthRange function.
|
|
// Returns:
|
|
// An integer that represents the range, in months, spanned by the
|
|
// two limits indicated by refMinRange and refMaxRange.
|
|
// See Also: CMonthCalCtrl::GetMonthRange
|
|
//-----------------------------------------------------------------------
|
|
virtual int GetMonthRange(COleDateTime& refMinRange,
|
|
COleDateTime& refMaxRange, DWORD dwFlags) const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function retrieves first and last displayed days dates.
|
|
// Parameters:
|
|
// refFirstVisibleDay - A first displayed day date.
|
|
// refLastVisibleDay - A last displayed day date.
|
|
// Returns:
|
|
// TRUE if succeeded, otherwise FALSE;
|
|
// See Also: GetMonthRange
|
|
//-----------------------------------------------------------------------
|
|
virtual BOOL GetVisibleRange(COleDateTime& refFirstVisibleDay,
|
|
COleDateTime& refLastVisibleDay) const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function allow scrolling between FirstDay and LastDay and
|
|
// try to show initial visible range between FirstVisibleDay and LastVisibleDay
|
|
// Parameters:
|
|
// FirstVisibleDay - A first displayed day date.
|
|
// LastVisibleDay - A last displayed day date.
|
|
// FirstDay - A first allowed day date.
|
|
// LastDay - A last allowed day date.
|
|
//-----------------------------------------------------------------------
|
|
virtual void SetDesiredVisibleAndFullRange(COleDateTime FirstVisibleDay, COleDateTime LastVisibleDay,
|
|
COleDateTime FirstDay, COleDateTime LastDay);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function returns the number of CXTPDatePickerButton
|
|
// items shown on the control.
|
|
// Remarks:
|
|
// Call this member function to determine the number of buttons
|
|
// currently used on the control.
|
|
// Returns:
|
|
// A number of CXTPDatePickerButton items shown on the control.
|
|
// See Also: GetButton, AddButton
|
|
//-----------------------------------------------------------------------
|
|
int GetButtonCount() const;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function returns a pointer to the CXTPDatePickerButton
|
|
// \object using its numeric index.
|
|
// Parameters:
|
|
// nIndex : The index of the CXTPDatePickerButton to retrieve.
|
|
// Remarks:
|
|
// Call this member function to retrieve a pointer to the button
|
|
// \object using its numeric index.
|
|
// Returns:
|
|
// A pointer to the CXTPDatePickerButton object.
|
|
// See Also: // GetButtonCount, AddButton
|
|
// ----------------------------------------------------------------------
|
|
CXTPDatePickerButton* GetButton(int nIndex) const;
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function adds one more buttons to the control.
|
|
// Parameters:
|
|
// nID : ID of the string resource item. This is the caption of the
|
|
// new button.
|
|
// Remarks:
|
|
// Call this member function to add one more CXTPDatePickerButton
|
|
// \objects to the control's collection.
|
|
// See Also:
|
|
// GetButton, GetButtonCount
|
|
// ---------------------------------------------------------------------
|
|
virtual void AddButton(UINT nID);
|
|
|
|
// -------------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function obtains a notification connection object
|
|
// pointer.
|
|
// Remarks:
|
|
// Used to subscribe (Advice) for notifications events from the control.
|
|
// Returns:
|
|
// A CXTPNotifyConnection pointer to the connection object.
|
|
// See Also:
|
|
// CXTPNotifyConnectionoverview, IXTPNotificationSink overview
|
|
// -------------------------------------------------------------------------
|
|
CXTPNotifyConnection* GetConnection() const;
|
|
|
|
// -----------------------------------------------------------------------
|
|
// Summary:
|
|
// Returns a collection of the days, selected in the date picker.
|
|
// Remarks:
|
|
// Call this member function to return a CXTPDatePickerDaysCollection
|
|
// collection of the days, selected in the date picker control.
|
|
// Returns:
|
|
// Pointer to the collection of the selected days.
|
|
// If you want to use pointer to this collection lately in your code,
|
|
// you should increment and decrement references to the object manually.
|
|
// See Also:
|
|
// m_pSelectedDays
|
|
// -----------------------------------------------------------------------
|
|
CXTPDatePickerDaysCollection* GetSelectedDays() const;
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function adjusts the layout of all sub-items depending
|
|
// on the current window client size.
|
|
// Remarks:
|
|
// AdjustLayout depends on the AutoSize flag (changing control size
|
|
// or item fonts correspondingly).
|
|
// See Also:
|
|
// AdjustLayout(CRect rcClient), IsAutoSize
|
|
// ----------------------------------------------------------------------
|
|
virtual void AdjustLayout();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to obtain current paint theme.
|
|
// Returns:
|
|
// A paint theme ID from enum XTPCalendarTheme.
|
|
//-----------------------------------------------------------------------
|
|
XTPCalendarTheme GetPaintTheme() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to set current paint theme.
|
|
// Parameters:
|
|
// ePaintTheme - A paint theme ID from enum XTPCalendarTheme.
|
|
//-----------------------------------------------------------------------
|
|
void SetPaintTheme(XTPCalendarTheme ePaintTheme);
|
|
|
|
// -----------------------------------------------------------------
|
|
// Summary:
|
|
// This member function registers the window class if it has not
|
|
// already been registered.
|
|
// Parameters:
|
|
// hInstance - Instance of resource where control is located
|
|
// Returns:
|
|
// A boolean value that specifies if the window is successfully
|
|
// registered.<p/>
|
|
// TRUE if the window class is successfully registered.<p/>
|
|
// Otherwise FALSE.
|
|
// -----------------------------------------------------------------
|
|
BOOL RegisterWindowClass(HINSTANCE hInstance = NULL);
|
|
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sends a notification to all control's
|
|
// event subscribers.
|
|
// Parameters:
|
|
// EventCode - The specific code of the event.
|
|
// wParam - First custom parameter. Depends on the event type.
|
|
// See specific event description for details.
|
|
// lParam - Second custom parameter. Depends on the event type.
|
|
// See specific event description for details.
|
|
// Remarks:
|
|
// This member function is called internally from inside the
|
|
// control when a notification is sent to all notification
|
|
// listeners.
|
|
// See Also: XTP_NOTIFICATIONCODE, GetConnection
|
|
//-----------------------------------------------------------------------
|
|
virtual void SendNotification(XTP_NOTIFY_CODE EventCode,
|
|
WPARAM wParam = 0, LPARAM lParam = 0);
|
|
|
|
protected:
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function initializes the month and day names depending
|
|
// \on localization.
|
|
// Remarks:
|
|
// This is an internal initialization function that reads the system
|
|
// user locale defaults and fills the month and day of the week
|
|
// arrays with the locale defaults.
|
|
// See Also:
|
|
// GetMonthName, SetMonthName, GetDayOfWeekName, SetDayOfWeekName
|
|
// ----------------------------------------------------------------------
|
|
virtual void InitNames();
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function performs control population, creating the
|
|
// view from the data.
|
|
// Remarks:
|
|
// Creates a new month collection for the control, populating it with
|
|
// the new objects created according to the stored properties and
|
|
// settings. Call this member function if the number of months to
|
|
// show needs adjusting.
|
|
// See Also:
|
|
// ClearMonths
|
|
// ----------------------------------------------------------------------
|
|
virtual void Populate();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function redraws the control windows.
|
|
// Parameters:
|
|
// bUpdateNow - if TRUE the CWnd::UpdateWindow() will be called,
|
|
// otherwise only CWnd::Invalidate() will be called.
|
|
// Remarks:
|
|
// Call this member function to redraw all control windows
|
|
// according to the stored parameter values.
|
|
// See Also:
|
|
// RedrawControl
|
|
//-----------------------------------------------------------------------
|
|
virtual void _RedrawControl(BOOL bUpdateNow);
|
|
|
|
// --------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to cleanup the month's array.
|
|
// See Also:
|
|
// Populate
|
|
// --------------------------------------------------------------
|
|
virtual void ClearMonths();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to perform all drawing logic.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// See Also: DrawButtons
|
|
//-----------------------------------------------------------------------
|
|
virtual void OnDraw(CDC* pDC);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to draw the calendar's buttons.
|
|
// Parameters:
|
|
// pDC - Pointer to a valid device context.
|
|
// See Also: OnDraw
|
|
//-----------------------------------------------------------------------
|
|
virtual void DrawButtons(CDC* pDC);
|
|
|
|
//MODIFIED FUNCTION
|
|
virtual void AdjustLayout(CRect rcClient); // <combine CXTPDatePickerControl::AdjustLayout>
|
|
|
|
// -----------------------------------------------------------
|
|
// Summary:
|
|
// This member function calculates the size of the button.
|
|
// Returns:
|
|
// CSize object with button size.
|
|
// See Also:
|
|
// SetButtonRect, CalcButtonBandRect
|
|
// -----------------------------------------------------------
|
|
virtual CSize CalcButtonSize() const;
|
|
|
|
// --------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to calculate and set the buttons
|
|
// bounding rectangle.
|
|
// See Also:
|
|
// CalcButtonSize, CalcButtonBandRect
|
|
// --------------------------------------------------------------
|
|
virtual void SetButtonRect();
|
|
|
|
// -------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to calculate and set the buttons band
|
|
// rectangle.
|
|
// Remarks:
|
|
// The band rectangle is a box that is drawn around the button to
|
|
// highlight the button.
|
|
// See Also:
|
|
// SetButtonRect, CalcButtonSize
|
|
// -------------------------------------------------------------------
|
|
virtual void CalcButtonBandRect();
|
|
|
|
// ------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to implement the button behavior.
|
|
// Parameters:
|
|
// point : Current mouse position.
|
|
// Remarks:
|
|
// This member function is called from the following member
|
|
// functions: OnLButtonDown, OnLButtonDblClk, OnLButtonUp,
|
|
// OnMouseLeave, and OnMouseMove.
|
|
// ------------------------------------------------------------------
|
|
virtual void ProcessButtons(CPoint point);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function shows a CXTPDatePickerList control at the
|
|
// coordinates specified by rcHeader.
|
|
// Parameters:
|
|
// rcHeader - The coordinates of the list window.
|
|
// dtMonth - The month date to start from.
|
|
// Remarks:
|
|
// Call this member function to force showing of the months
|
|
// pop-up list control.
|
|
// See Also: CXTPDatePickerList overview
|
|
//-----------------------------------------------------------------------
|
|
virtual void ShowListHeader(CRect rcHeader, COleDateTime dtMonth);
|
|
|
|
// -------------------------------------------------------------------------
|
|
// Summary:
|
|
// This function shifts the specified date for the specified number
|
|
// \of months.
|
|
// Parameters:
|
|
// refDate : Reference to the COleDateTime object to shift the date
|
|
// on.
|
|
// nMonthCount : Number of months used for shifting. Can be both positive
|
|
// and negative numbers.
|
|
// Remarks:
|
|
// This is a utility function that is used to shift the specified
|
|
// date for a specific number of months.
|
|
// Returns:
|
|
// A BOOL value that specifies if the function is successful.<p/>
|
|
// Return zero if the value of this COleDateTime object is set
|
|
// successfully.<p/>
|
|
// Otherwise return 1.
|
|
// See Also:
|
|
// COleDateTime overview
|
|
// -------------------------------------------------------------------------
|
|
static BOOL ShiftDate(COleDateTime &refDate, int nMonthCount);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function sets new dimensions for the month grid.
|
|
// Parameters:
|
|
// rcGrid - New rectangle coordinates of the Grid area.
|
|
// Remarks:
|
|
// Calculates and sets Grid dimensions (rows and columns count) for
|
|
// the grid size.
|
|
// See Also: AdjustLayout
|
|
//-----------------------------------------------------------------------
|
|
virtual CSize SetGridDimentions(CRect rcGrid);
|
|
|
|
// ------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function creates the internal month array.
|
|
// Remarks:
|
|
// Fills the internal month array with the new DatPickerItemMonth
|
|
// \objects, using the values of the initialized data members.
|
|
// See Also:
|
|
// Populate
|
|
// ------------------------------------------------------------------
|
|
virtual void CreateMonthArray();
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is called by the framework to allow other
|
|
// necessary sub-classing to occur before the window is sub-classed.
|
|
// Remarks:
|
|
// This member function is used to call some internal initialization
|
|
// functions like AdjustLayout() immediately after instantiating the
|
|
// DatePickerControl object.
|
|
// See Also:
|
|
// Create, CXTPDatePickerControl::CXTPDatePickerControl
|
|
// ---------------------------------------------------------------------
|
|
virtual void PreSubclassWindow();
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function is used to process the control's button
|
|
// clicks.
|
|
// Parameters:
|
|
// nID : Date picker button ID (could be XTP_IDS_DATEPICKER_TODAY
|
|
// or XTP_IDS_DATEPICKER_NONE)
|
|
// Remarks:
|
|
// This member function performs internal button click processing and
|
|
// sends a XTP_NC_DATEPICKER_BUTTON_CLICK notification to the parent
|
|
// window.
|
|
// See Also:
|
|
// SendMessageToParent
|
|
// ----------------------------------------------------------------------
|
|
virtual void OnButtonClick(UINT nID);
|
|
|
|
protected:
|
|
DatePickerMouseMode m_mouseMode; // This member variable is used to specify the current Mouse operating mode.
|
|
|
|
int m_nLockUpdateCount; // This member variable is used as a counter that is used to count
|
|
// the update locks. An image will be redrawn only when the lock
|
|
// counter is equal to zero.
|
|
int m_nTimerID; // This member variable is used to specify the control timer ID.
|
|
|
|
CRect m_rcControl; // This data member is used to store the control drawing coordinates.
|
|
|
|
CXTPDatePickerPaintManager* m_pPaintManager; // This member variable is a pointer to the paint manager.
|
|
|
|
BOOL m_bAutoSize; // This member variable is used as the AutoSize flag.
|
|
BOOL m_bIsModal; // This member variable is used to specify if the control is used as
|
|
// a pop-up window. TRUE when the control is used as a pop-up. FALSE
|
|
// \otherwise.
|
|
BOOL m_bChanged; // This member variable is used to determine if the control requires
|
|
// redrawing.
|
|
|
|
CBitmap m_bmpCache; // This member variable is a cached window bitmap.
|
|
|
|
int m_nRows; // This member variable is used to specify the number of rows in the
|
|
// column month's grid.
|
|
int m_nColumns; // This member variable is used to specify the number of columns in
|
|
// the column month's grid.
|
|
//MODIFICATION - DESIRED MATRIX
|
|
int m_nDesiredRows; //The desired rows.
|
|
int m_nDesiredColumns; //The desired columns.
|
|
|
|
CXTPNotifyConnection* m_pConnection; // This member variable is a connection object that is used to send
|
|
// notifications.
|
|
|
|
COleDateTime m_dtMinRange; // This member variable specifies the minimum allowable date for a
|
|
// date picker control.
|
|
COleDateTime m_dtMaxRange; // This member variable specifies the maximum allowable date for a
|
|
// date picker control.
|
|
COleDateTime m_dtToday; // This member variable is used to specify the "Today" date for a
|
|
// date picker control.
|
|
COleDateTime m_dtFirstMonth; // This member variable is used to specify the first month in the
|
|
// grid.
|
|
int m_nFirstDayOfWeek; // This member variable is used to specify the first day of the week
|
|
// to display (1-Sunday, 2-Monday ... etc).
|
|
int m_nFirstWeekOfYearDays; // This member variable is used to specify the number of days of
|
|
// the new year in the first week of this year.
|
|
|
|
PFNITEMMETRICS m_pfnCallback; // This member variable is a pointer to the user's IsSpecialDay
|
|
// function.
|
|
void* m_pCallbackParam; // This member variable is a pointer to the user's additional
|
|
// parameter for the callback function.
|
|
|
|
CArray<CXTPDatePickerItemMonth*, CXTPDatePickerItemMonth*> m_arrMonths; // This member variable is an internal storage for the month items.
|
|
|
|
CXTPDatePickerDaysCollection* m_pSelectedDays; // This member variable is a collection of selected days.
|
|
|
|
BOOL m_bHighlightToday; // This member variable is used as a flag to determine if the "Today"
|
|
// date is highlighted.
|
|
BOOL m_bShowWeekNumbers; // This member variable is a flag that determines if the "week
|
|
// numbers" are displayed.
|
|
BOOL m_bShowNonMonthDays; // This member variable is a flag that determines if the "non month
|
|
// days" are displayed.
|
|
XTPDatePickerBorderStyle m_borderStyle; // This member variable is a flag that determines if the control
|
|
// displays a 3D border.
|
|
int m_nMaxSelectionDays; // This member variable is used to specify the maximum number of
|
|
// selected days.
|
|
int m_nMonthDelta; // This member variable is used to specify the number of months set
|
|
// as the control's scroll rate. If this value is zero, then the
|
|
// month delta is reset to the default rate, which is the number of
|
|
// months displayed in the control.
|
|
|
|
COleDateTime m_dtFirstClicked; // This member variable is used to specify the day that was clicked
|
|
// before starting the mouse selection.
|
|
COleDateTime m_dtLastClicked; // This member variable is used to specify the day that was clicked
|
|
// last in the mouse selection.
|
|
BOOL m_bSelectWeek; // TRUE when user is started selecting the whole week.
|
|
|
|
COleDateTime m_dtFocused; // This member variable is used to specify the focused day. Used only for keyboard navigation and selecting.
|
|
COleDateTime m_dtFSelBase; // This member variable is used to specify start day of the continuous selection. Used only for keyboard navigation and selecting.
|
|
|
|
CXTPDatePickerList* m_pListControl; // This member variable is used to specify the "header month list"
|
|
// pop-up control.
|
|
|
|
CString* m_arMonthNames; // This member variable contains the localized month names values.
|
|
CString* m_arDayOfWeekNames;// This member variable contains the day abbreviation for drawing in
|
|
// the month header.
|
|
|
|
CRect m_rcGrid; // Months grid rect.
|
|
|
|
CXTPDatePickerButtons m_arrButtons; // This member variable is an array of control buttons.
|
|
|
|
BOOL m_bAllowNoncontinuousSelection; // TRUE to allow Noncontinuous selection
|
|
BOOL m_bMultiSelectionMode; // TRUE if multiselection mode enabled (i.e. VK_CTRL is always on).
|
|
|
|
CXTPDatePickerButton* m_pButtonCaptured; // Pointer to a date picker button
|
|
BOOL m_bRightToLeft; // TRUE to display calendar components in Right-To-Left (RTL) format
|
|
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
LCID m_lcidActiveLocale;
|
|
|
|
enum XTPEnumMovmentStep
|
|
{
|
|
stepDay = 1,
|
|
stepWeek = 2,
|
|
stepMonth = 3,
|
|
stepYear = 4,
|
|
|
|
stepWeekBE = 10,
|
|
stepMonthBE = 11
|
|
};
|
|
enum XTPEnumMovmentDirection
|
|
{
|
|
dirNext = 1,
|
|
dirPrev = -1
|
|
};
|
|
|
|
class CXTPSelectionHelper
|
|
{
|
|
public:
|
|
CXTPSelectionHelper(CXTPDatePickerControl* pControl);
|
|
|
|
void RemoveFocus();
|
|
|
|
void MoveFocus(int eStep, int eDirection, BOOL bContinuouse, BOOL bSaveSel);
|
|
void SelUnselFocus();
|
|
|
|
void _TmpSaveFocus();
|
|
void _TmpRestoreFocus();
|
|
|
|
protected:
|
|
void InitFocusIfNeed();
|
|
|
|
void _MoveFocus(int eStep, int eDirection);
|
|
|
|
CXTPDatePickerControl* m_pDP;
|
|
|
|
COleDateTime m_dtFocusedTmp;
|
|
COleDateTime m_dtFSelBaseTmp;
|
|
};
|
|
friend class CXTPSelectionHelper;
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
protected:
|
|
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
// AFX_MSG(CXTPDatePickerControl)
|
|
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
|
afx_msg int OnCreate(LPCREATESTRUCT lp);
|
|
afx_msg void OnPaint();
|
|
afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM /*lParam*/);
|
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
|
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
|
|
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
|
|
afx_msg void OnCaptureChanged(CWnd* pWnd);
|
|
afx_msg void OnCancelMode();
|
|
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
|
|
afx_msg void OnSize(UINT nType, int cx, int cy);
|
|
afx_msg void OnTimeChange();
|
|
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
|
afx_msg void OnSysColorChange();
|
|
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
|
|
afx_msg void OnMouseLeave();
|
|
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
|
|
afx_msg void OnSetFocus(CWnd* pOldWnd);
|
|
afx_msg void OnKillFocus (CWnd* pNewWnd);
|
|
afx_msg UINT OnGetDlgCode();
|
|
afx_msg void OnDestroy();
|
|
afx_msg void OnEnable(BOOL bEnable);
|
|
//}}AFX_MSG
|
|
|
|
virtual void OnFinalRelease();
|
|
|
|
DECLARE_MESSAGE_MAP()
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
private:
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
|
|
|
|
virtual void _EndModalIfNeed();
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
CXTPNotifySink* m_pSink;
|
|
void OnEventResourceImagesChanged(XTP_NOTIFY_CODE Event, WPARAM wParam, LPARAM lParam);
|
|
|
|
public:
|
|
BOOL m_bDeleteOnFinalRelease; // Delete self OnFinalRelease() call.
|
|
BOOL m_bYearsTriangle; //use extra button for 1 year jump
|
|
BOOL m_bRestrictMode; //flag to keep desired month's numbers without scaling
|
|
CString m_strYearMonthFormat; //The year month format.
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
AFX_INLINE CXTPDatePickerPaintManager* CXTPDatePickerControl::GetPaintManager() const {
|
|
return m_pPaintManager;
|
|
}
|
|
AFX_INLINE BOOL CXTPDatePickerControl::IsModal() const {
|
|
return m_bIsModal;
|
|
}
|
|
AFX_INLINE BOOL CXTPDatePickerControl::IsAutoSize() const {
|
|
return m_bAutoSize;
|
|
}
|
|
AFX_INLINE void CXTPDatePickerControl::SetCallbackDayMetrics(PFNITEMMETRICS pFunc, void* pParam) {
|
|
m_pfnCallback = pFunc;
|
|
m_pCallbackParam = pParam;
|
|
}
|
|
AFX_INLINE PFNITEMMETRICS CXTPDatePickerControl::GetCallbackDayMetrics() const {
|
|
return m_pfnCallback;
|
|
}
|
|
AFX_INLINE void CXTPDatePickerControl::SetFirstDayOfWeek(int nDay) {
|
|
ASSERT(nDay >= 1 && nDay <= 7);
|
|
if (nDay >= 1 && nDay <= 7 && nDay != m_nFirstDayOfWeek)
|
|
{
|
|
m_nFirstDayOfWeek = nDay;
|
|
Populate();
|
|
}
|
|
}
|
|
AFX_INLINE int CXTPDatePickerControl::GetFirstDayOfWeek() const {
|
|
return m_nFirstDayOfWeek;
|
|
}
|
|
AFX_INLINE void CXTPDatePickerControl::SetFirstWeekOfYearDays(int nDays) {
|
|
ASSERT(nDays >= 1 && nDays <= 7);
|
|
if (nDays >= 1 && nDays <= 7 && nDays != m_nFirstWeekOfYearDays)
|
|
{
|
|
m_nFirstWeekOfYearDays = nDays;
|
|
RedrawControl();
|
|
}
|
|
}
|
|
AFX_INLINE int CXTPDatePickerControl::GetFirstWeekOfYearDays() const {
|
|
return m_nFirstWeekOfYearDays;
|
|
}
|
|
AFX_INLINE BOOL CXTPDatePickerControl::GetHighlightToday() const {
|
|
return m_bHighlightToday;
|
|
}
|
|
AFX_INLINE BOOL CXTPDatePickerControl::GetShowWeekNumbers() const {
|
|
return m_bShowWeekNumbers;
|
|
}
|
|
AFX_INLINE int CXTPDatePickerControl::GetRows() const {
|
|
return m_nRows;
|
|
}
|
|
AFX_INLINE int CXTPDatePickerControl::GetCols() const {
|
|
return m_nColumns;
|
|
}
|
|
AFX_INLINE void CXTPDatePickerControl::SetMonthName(int nMonth, LPCTSTR strMonthName) {
|
|
ASSERT(nMonth >= 1 && nMonth <= 12);
|
|
m_arMonthNames[nMonth - 1] = strMonthName;
|
|
}
|
|
AFX_INLINE CString CXTPDatePickerControl::GetMonthName(int nMonth) const {
|
|
return nMonth >= 1 && nMonth <= 12 ? m_arMonthNames[nMonth - 1] : _T("");
|
|
}
|
|
AFX_INLINE void CXTPDatePickerControl::SetDayOfWeekName(int nDayOfWeek, LPCTSTR strDayOfWeekName) {
|
|
ASSERT(nDayOfWeek >= 1 && nDayOfWeek <= 7);
|
|
m_arDayOfWeekNames[nDayOfWeek - 1] = strDayOfWeekName;
|
|
}
|
|
AFX_INLINE CString CXTPDatePickerControl::GetDayOfWeekName(int nDayOfWeek) const {
|
|
return nDayOfWeek >= 1 && nDayOfWeek <= 7 ? m_arDayOfWeekNames[nDayOfWeek - 1] : _T("");
|
|
}
|
|
AFX_INLINE BOOL CXTPDatePickerControl::GetShowNonMonthDays() const {
|
|
return m_bShowNonMonthDays;
|
|
}
|
|
AFX_INLINE XTPDatePickerBorderStyle CXTPDatePickerControl::GetBorderStyle() const {
|
|
return m_borderStyle;
|
|
}
|
|
AFX_INLINE int CXTPDatePickerControl::GetMaxSelCount() const {
|
|
return m_nMaxSelectionDays;
|
|
}
|
|
AFX_INLINE int CXTPDatePickerControl::GetMonthDelta() const {
|
|
return m_nMonthDelta ? m_nMonthDelta : 1;
|
|
}
|
|
AFX_INLINE void CXTPDatePickerControl::SetMonthDelta(int iDelta) {
|
|
m_nMonthDelta = iDelta;
|
|
}
|
|
AFX_INLINE BOOL CXTPDatePickerControl::GetToday(COleDateTime& refDateTime) const {
|
|
refDateTime = m_dtToday;
|
|
return TRUE;
|
|
}
|
|
AFX_INLINE int CXTPDatePickerControl::GetButtonCount() const {
|
|
return (int)m_arrButtons.GetSize();
|
|
}
|
|
AFX_INLINE CXTPDatePickerButton* CXTPDatePickerControl::GetButton(int nIndex) const {
|
|
return m_arrButtons[nIndex];
|
|
}
|
|
AFX_INLINE CXTPNotifyConnection* CXTPDatePickerControl::GetConnection() const {
|
|
return m_pConnection;
|
|
}
|
|
AFX_INLINE BOOL CXTPDatePickerControl::IsAllowNoncontinuousSelection() const {
|
|
return m_bAllowNoncontinuousSelection;
|
|
}
|
|
AFX_INLINE CXTPDatePickerDaysCollection* CXTPDatePickerControl::GetSelectedDays() const {
|
|
return m_pSelectedDays;
|
|
}
|
|
AFX_INLINE void CXTPDatePickerControl::AdjustLayout() {
|
|
InitNames();
|
|
AdjustLayout(m_rcControl);
|
|
}
|
|
|
|
AFX_INLINE BOOL CXTPDatePickerControl::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 BOOL CXTPDatePickerControl::IsMultiSelectionMode() const {
|
|
return m_bMultiSelectionMode;
|
|
}
|
|
AFX_INLINE void CXTPDatePickerControl::SetMultiSelectionMode(BOOL bMultiSelectionMode) {
|
|
m_bMultiSelectionMode = bMultiSelectionMode;
|
|
}
|
|
#endif // !defined(_XTPDATEPICKERCONTROL_H__)
|