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.

186 lines
6.9 KiB
C

2 years ago
// XTPDatePickerItemList.h: interface for the CXTPDatePickerItemList 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(_XTPDATEPICKERITEMLIST_H__)
#define _XTPDATEPICKERITEMLIST_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPDatePickerControl;
//==========================================================================
// Summary:
// This class provides the functionality of a list control which
// displays month names.
// Remarks:
// The CXTPDatePickerList provides a functionality of a list control
// which displays a collection of month names in a pop-up list window,
// allowing the user to scroll up and down and to choose any specific
// month for further selecting in the date picker control.
// See Also: CMonthCalCtrl
//===========================================================================
class _XTP_EXT_CLASS CXTPDatePickerList : public CWnd
{
friend class CXTPDatePickerControl;
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CXTPDatePickerList object.
// Parameters:
// pControl - Pointer to the parent CXTPDatePickerControl object
// dtStartMonth - A date containing the month which will be created
// as the central item in the list.
// Remarks:
// Construct a CXTPDatePickerList object in two steps.
// First, call the constructor CXTPDatePickerList and then
// call Create method, which initializes the window.
// Example:
// <code>
// // Declare a dynamic CXTPDatePickerList object.
// pListControl = new CXTPDatePickerList(pDatePickerWnd, dtMonthToShow);
//
// // create control
// pListControl->Create(rcHeader);
// </code>
// See Also: Create
//-----------------------------------------------------------------------
CXTPDatePickerList(CXTPDatePickerControl* pControl, COleDateTime dtStartMonth);
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPDatePickerList object,
// handles cleanup and de-allocation.
//-----------------------------------------------------------------------
virtual ~CXTPDatePickerList();
//-----------------------------------------------------------------------
// Summary:
// Creates the List Window with position and sizes.
// Parameters:
// rcList - Rectangle determining list window position and size.
// Remarks:
// Construct a CXTPDatePickerList object in two steps.
// First, call the constructor CXTPDatePickerList and then
// call Create method, which initializes the window.
// Example: For the example, see CXTPDatePickerList::CXTPDatePickerList.
// Returns:
// Nonzero if successful; otherwise 0.
// See Also: CXTPDatePickerList::CXTPDatePickerList
//-----------------------------------------------------------------------
BOOL Create(CRect rcList);
// Operations
public:
//-----------------------------------------------------------------------
// Summary:
// Returns an interval between start month and selected month.
// Remarks:
// Call this member function at any time to determine which
// month is currently selected in the list.
// Returns:
// A number of months between start month and selected one.
//-----------------------------------------------------------------------
int GetMonthInterval() const;
public:
//-----------------------------------------------------------------------
// Summary:
// Implements scroll down functionality.
// Parameters:
// nCount - determines how many positions will be scrolled.
// Remarks:
// Call this member function to scroll the list with months down
// by a specified amount of items.
// See Also: ScrollUp
//-----------------------------------------------------------------------
void ScrollDown(int nCount = 1);
//-----------------------------------------------------------------------
// Summary:
// Implements scroll up functionality
// Parameters:
// nCount - Determines how many positions will be scrolled.
// Remarks:
// Call this member function to scroll the list with months up
// by a specified amount of items.
// See Also: ScrollDown
//-----------------------------------------------------------------------
void ScrollUp(int nCount = 1);
private:
static void ShiftMonthUp(int& nYear, int& nMonth, const int nCount);
static void ShiftMonthDown(int& nYear, int& nMonth, const int nCount);
protected:
//-----------------------------------------------------------------------
// Summary:
// Calculates size of list by font and control sizes.
// Returns:
// A size of the list to create.
//-----------------------------------------------------------------------
CSize GetListSize() const;
//-----------------------------------------------------------------------
// Summary:
// Determines whether an item is selected.
// Parameters:
// nX - Item zero-based numeric index from the beginning of the list.
// rcItem - Coordinates of the item to check.
// Returns:
// TRUE if item is selected, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL IsSelected(int nX, CRect rcItem) const;
//{{AFX_CODEJOCK_PRIVATE
DECLARE_MESSAGE_MAP()
// {{AFX_MSG(CXTPDatePickerList)
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnPaint();
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnTimer(UINT_PTR nIDEvent);
// }}AFX_MSG
//}}AFX_CODEJOCK_PRIVATE
private:
DISABLE_WNDCREATE()
// Attributes
protected:
CXTPDatePickerControl* m_pControl; // Pointer to the parent control.
COleDateTime m_dtStartMonth; // The month to start selection from (will be placed in the middle of the list for the beginning).
COleDateTime m_dtMiddleMonth; // The month currently in center.
COleDateTime m_dtSelMonth; // Currently selected month in the list.
int m_nItemsAbove; // How many items are from the top of the middle item on the list.
int m_nItemsBelow; // How many items are from the bottom of the middle item on the list.
CRect m_rcListControl; // Coordinates of list control in screen coordinates.
};
#endif // !defined(_XTPDATEPICKERITEMLIST_H__)