XTPDatePickerList.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:7k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPDatePickerItemList.h: interface for the CXTPDatePickerItemList class.
  2. //
  3. // This file is a part of the XTREME CALENDAR MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(_XTPDATEPICKERITEMLIST_H__)
  22. #define _XTPDATEPICKERITEMLIST_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. class CXTPDatePickerControl;
  28. //==========================================================================
  29. // Summary:
  30. //     This class provides the functionality of a list control which
  31. //     displays month names.
  32. // Remarks:
  33. //     The CXTPDatePickerList provides a functionality of a list control
  34. //     which displays a collection of month names in a pop-up list window,
  35. //     allowing the user to scroll up and down and to choose any specific
  36. //     month for further selecting in the date picker control.
  37. // See Also: CMonthCalCtrl
  38. //===========================================================================
  39. class _XTP_EXT_CLASS CXTPDatePickerList : public CWnd
  40. {
  41. friend class CXTPDatePickerControl;
  42. public:
  43. //-----------------------------------------------------------------------
  44. // Summary:
  45. //     Constructs a CXTPDatePickerList object.
  46. // Parameters:
  47. //     pControl     - Pointer to the parent CXTPDatePickerControl object
  48. //     dtStartMonth - A date containing the month which will be created
  49. //                    as the central item in the list.
  50. // Remarks:
  51. //     Construct a CXTPDatePickerList object in two steps.
  52. //     First, call the constructor CXTPDatePickerList and then
  53. //     call Create method, which initializes the window.
  54. // Example:
  55. // <code>
  56. // // Declare a dynamic CXTPDatePickerList object.
  57. // pListControl = new CXTPDatePickerList(pDatePickerWnd, dtMonthToShow);
  58. //
  59. // // create control
  60. // pListControl->Create(rcHeader);
  61. // </code>
  62. // See Also: Create
  63. //-----------------------------------------------------------------------
  64. CXTPDatePickerList(CXTPDatePickerControl* pControl, COleDateTime dtStartMonth);
  65. //-----------------------------------------------------------------------
  66. // Summary:
  67. //     Destroys a CXTPDatePickerList object,
  68. //     handles cleanup and de-allocation.
  69. //-----------------------------------------------------------------------
  70. virtual ~CXTPDatePickerList();
  71. //-----------------------------------------------------------------------
  72. // Summary:
  73. //     Creates the List Window with position and sizes.
  74. // Parameters:
  75. //     rcList - Rectangle determining list window position and size.
  76. // Remarks:
  77. //     Construct a CXTPDatePickerList object in two steps.
  78. //     First, call the constructor CXTPDatePickerList and then
  79. //     call Create method, which initializes the window.
  80. // Example: For the example, see CXTPDatePickerList::CXTPDatePickerList.
  81. // Returns:
  82. //     Nonzero if successful; otherwise 0.
  83. // See Also: CXTPDatePickerList::CXTPDatePickerList
  84. //-----------------------------------------------------------------------
  85. BOOL Create(CRect rcList);
  86. // Operations
  87. public:
  88. //-----------------------------------------------------------------------
  89. // Summary:
  90. //     Returns an interval between start month and selected month.
  91. // Remarks:
  92. //     Call this member function at any time to determine which
  93. //     month is currently selected in the list.
  94. // Returns:
  95. //     A number of months between start month and selected one.
  96. //-----------------------------------------------------------------------
  97. int GetMonthInterval();
  98. public:
  99. //-----------------------------------------------------------------------
  100. // Summary:
  101. //     Implements scroll down functionality.
  102. // Parameters:
  103. //     nCount - determines how many positions will be scrolled.
  104. // Remarks:
  105. //     Call this member function to scroll the list with months down
  106. //     by a specified amount of items.
  107. // See Also: ScrollUp
  108. //-----------------------------------------------------------------------
  109. void ScrollDown(int nCount = 1);
  110. //-----------------------------------------------------------------------
  111. // Summary:
  112. //     Implements scroll up functionality
  113. // Parameters:
  114. //     nCount - Determines how many positions will be scrolled.
  115. // Remarks:
  116. //     Call this member function to scroll the list with months up
  117. //     by a specified amount of items.
  118. // See Also: ScrollDown
  119. //-----------------------------------------------------------------------
  120. void ScrollUp(int nCount = 1);
  121. private:
  122. static void ShiftMonthUp(int& nYear, int& nMonth, const int nCount);
  123. static void ShiftMonthDown(int& nYear, int& nMonth, const int nCount);
  124. protected:
  125. //-----------------------------------------------------------------------
  126. // Summary:
  127. //     Calculates size of list by font and control sizes.
  128. // Returns:
  129. //     A size of the list to create.
  130. //-----------------------------------------------------------------------
  131. CSize GetListSize();
  132. //-----------------------------------------------------------------------
  133. // Summary:
  134. //     Determines whether an item is selected.
  135. // Parameters:
  136. //     nX      - Item zero-based numeric index from the beginning of the list.
  137. //     rcItem  - Coordinates of the item to check.
  138. // Returns:
  139. //     TRUE if item is selected, FALSE otherwise.
  140. //-----------------------------------------------------------------------
  141. BOOL IsSelected(int nX, CRect rcItem);
  142. //{{AFX_CODEJOCK_PRIVATE
  143. DECLARE_MESSAGE_MAP()
  144. // {{AFX_MSG(CXTPDatePickerList)
  145. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  146. afx_msg void OnPaint();
  147. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  148. afx_msg void OnTimer(UINT_PTR nIDEvent);
  149. // }}AFX_MSG
  150. //}}AFX_CODEJOCK_PRIVATE
  151. private:
  152. DISABLE_WNDCREATE()
  153. // Attributes
  154. protected:
  155. CXTPDatePickerControl* m_pControl;  // Pointer to the parent control.
  156. COleDateTime m_dtStartMonth;        // The month to start selection from (will be placed in the middle of the list for the beginning).
  157. COleDateTime m_dtMiddleMonth;       // The month currently in center.
  158. COleDateTime m_dtSelMonth;          // Currently selected month in the list.
  159. int m_nItemsAbove;  // How many items are from the top of the middle item on the list.
  160. int m_nItemsBelow;  // How many items are from the bottom of the middle item on the list.
  161. CRect m_rcListControl;  // Coordinates of list control in screen coordinates.
  162. };
  163. #endif // !defined(_XTPDATEPICKERITEMLIST_H__)