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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarWeekView.h: interface for the CXTPCalendarWeekView 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(_XTPCALENDARWEEKVIEW_H__)
  22. #define _XTPCALENDARWEEKVIEW_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPCalendarView.h"
  28. #include "XTPCalendarWeekViewDay.h"
  29. class CXTPCalendarWeekView;
  30. class CXTPCalendarContorl;
  31. //===========================================================================
  32. // Summary:
  33. //     This class implements a specific view portion of the Calendar
  34. //     control - called <b>Week view</b>.
  35. // Remarks:
  36. //     The Week view can be shown as one week, consisting of
  37. //     7 days, as a normal week contains.
  38. //     Weekend days of the week are drawn compressed, which means
  39. //     that 2 weekend days will be drawn in a rectangle of a usual day.
  40. //     Each day is represented by a CXTPCalendarWeekViewDay class.
  41. //
  42. // See Also: CXTPCalendarView, CXTPCalendarDayView, CXTPCalendarMonthView,
  43. //          CXTPCalendarWeekViewDay, CXTPCalendarWeekViewEvent
  44. //===========================================================================
  45. class _XTP_EXT_CLASS CXTPCalendarWeekView : public CXTPCalendarViewT<
  46. CXTPCalendarWeekViewDay,
  47. XTP_CALENDAR_HITTESTINFO_WEEK_VIEW>
  48. {
  49. //{{AFX_CODEJOCK_PRIVATE
  50. DECLARE_DYNAMIC(CXTPCalendarWeekView)
  51. friend class CXTPCalendarWeekViewEvent;
  52. friend class CXTPCalendarTheme;
  53. //}}AFX_CODEJOCK_PRIVATE
  54. public:
  55. //------------------------------------------------------------------------
  56. // Summary:
  57. //     Base class type definition.
  58. //------------------------------------------------------------------------
  59. typedef CXTPCalendarViewT<  CXTPCalendarWeekViewDay,
  60. XTP_CALENDAR_HITTESTINFO_WEEK_VIEW> TBase;
  61. //-----------------------------------------------------------------------
  62. // Summary:
  63. //     Default object constructor.
  64. // Parameters:
  65. //     pCalendarControl - Pointer to CXTPCalendarControl object.
  66. // See Also: ~CXTPCalendarEvent()
  67. //-----------------------------------------------------------------------
  68. CXTPCalendarWeekView(CXTPCalendarControl* pCalendarControl);
  69. //-----------------------------------------------------------------------
  70. // Summary:
  71. //     Default class destructor.
  72. // Remarks:
  73. //     Handles member items deallocation.
  74. //-----------------------------------------------------------------------
  75. virtual ~CXTPCalendarWeekView();
  76. //-----------------------------------------------------------------------
  77. // Summary:
  78. //     This member function is used to populate the view with data
  79. //     for all items contained in the view.
  80. //-----------------------------------------------------------------------
  81. virtual void Populate();
  82. //-----------------------------------------------------------------------
  83. // Summary:
  84. //     This member function is used to show the specified day in the
  85. //     calendar view.
  86. // Parameters:
  87. //     date - A COleDateTime object that contains the date to show.
  88. //     bSelect - TRUE to select the specified day after showing,
  89. //               FALSE otherwise. TRUE is the default value.
  90. // Remarks:
  91. //     Call this member function to show only the specified day in the
  92. //     calendar view.
  93. //-----------------------------------------------------------------------
  94. virtual void ShowDay(const COleDateTime& date, BOOL bSelect = TRUE);
  95. //-----------------------------------------------------------------------
  96. // Summary:
  97. //     This member function is used to adjust the view's layout depending
  98. //     on the window's client size and also calls AdjustLayout() for
  99. //     all sub-items.
  100. // Parameters:
  101. //     pDC                   - A pointer to a valid device context.
  102. //     rcView                - A CRect that contains the rectangle
  103. //                             coordinates used to draw the view.
  104. //     bCallPostAdjustLayout - A BOOL. Flag used to call additional adjustments.
  105. // Remarks:
  106. //     Call Populate() prior calling adjust AdjustLayout().
  107. //     AdjustLayout2 is called by calendar control instead of AdjustLayout
  108. //     when theme is set.
  109. //-----------------------------------------------------------------------
  110. virtual void AdjustLayout(CDC* pDC, const CRect& rcView, BOOL bCallPostAdjustLayout = TRUE);
  111. virtual void AdjustLayout2(CDC* pDC, const CRect& rcView, BOOL bCallPostAdjustLayout = TRUE); //<COMBINE AdjustLayout>
  112. //-----------------------------------------------------------------------
  113. // Summary:
  114. //     This member function is used to retrieve information about a
  115. //     scroll bar state.
  116. // Parameters:
  117. //     pSI - A pointer to a scrollbar information structure.
  118. // Returns:
  119. //     A BOOL. This function should return TRUE to indicate success.
  120. //     FALSE otherwise.
  121. //-----------------------------------------------------------------------
  122. virtual BOOL GetScrollBarInfoV(SCROLLINFO* pSI);
  123. //-----------------------------------------------------------------------
  124. // Summary:
  125. //     This member function is used to scroll the contents of a view.
  126. // Parameters:
  127. //     nPos     - An int that contains the position value.
  128. //     nPos_raw - An int that contains the raw position value.
  129. // Remarks:
  130. //     ScrollV internally uses Populate() to fill the new view data.
  131. // See Also: Populate().
  132. //-----------------------------------------------------------------------
  133. virtual void ScrollV(int nPos, int nPos_raw);
  134. //-----------------------------------------------------------------------
  135. // Summary:
  136. //     This member function is used to draw the view contents using
  137. //     the specified device context.
  138. // Parameters:
  139. //     pDC - A pointer to a valid device context.
  140. // Remarks:
  141. //     Call AdjustLayout() before calling Draw().
  142. //     Draw2 is called by calendar control instead of Draw when theme
  143. //     is set.
  144. // See Also: AdjustLayout().
  145. //-----------------------------------------------------------------------
  146. virtual void Draw(CDC* pDC);
  147. virtual void Draw2(CDC* pDC); //<COMBINE Draw>
  148. //-----------------------------------------------------------------------
  149. // Summary:
  150. //     This member function is used to process keyboard on-key-down events.
  151. // Parameters:
  152. //     nChar   - A UINT that contains the virtual key code of the given key.
  153. //     nRepCnt - A UINT that contains the number of times the keystroke is
  154. //               repeated as a result of the user holding down the key.
  155. //     nFlags  - A UINT that contains the scan code, key-transition code,
  156. //               previous key state, and the context code.
  157. // Remarks:
  158. //     This method is called by the CalendarControl when the user
  159. //     presses keys on the keyboard.
  160. //-----------------------------------------------------------------------
  161. virtual void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  162. //-----------------------------------------------------------------------
  163. // Summary:
  164. //     Call this member function to obtain the date of a day view by
  165. //     the day's index.
  166. // Parameters:
  167. //     nIndex  - An int that contains the day view index in the view
  168. //               collection.
  169. // Remarks:
  170. //     Index number starts with 0 and cannot be negative.
  171. // Returns:
  172. //     A COleDateTime object that contains the day view date and time.
  173. // See Also: GetViewDayCount()
  174. //-----------------------------------------------------------------------
  175. virtual COleDateTime GetViewDayDate(int nIndex);
  176. //-----------------------------------------------------------------------
  177. // Summary:
  178. //     This member function is used to obtain the header height of a
  179. //     day.
  180. // Returns:
  181. //     An int that contains the height of a row required to display
  182. //     a single event.
  183. //-----------------------------------------------------------------------
  184. int GetDayHeaderHeight() const;
  185. //-----------------------------------------------------------------------
  186. // Summary:
  187. //     This member function is used to set the date of a week's Monday.
  188. // Parameters:
  189. //     dtNewBeginDate  - A COleDateTime object that contains the date of Monday.
  190. // Remarks:
  191. //     Call this member function to set the date of a week to the Monday of
  192. //     the current week.
  193. // See Also: GetBeginDate()
  194. //-----------------------------------------------------------------------
  195. void SetBeginDate(COleDateTime dtNewBeginDate);
  196. //-----------------------------------------------------------------------
  197. // Summary:
  198. //     This member function is used to obtain the date of the current
  199. //     week's Monday.
  200. // Returns:
  201. //     A COleDateTime object that contains the current week's Monday date.
  202. // See Also: SetBeginDate()
  203. //-----------------------------------------------------------------------
  204. COleDateTime GetBeginDate() const;
  205. //-----------------------------------------------------------------------
  206. // Summary:
  207. //     This member function is used to obtain the width of the weeks
  208. //     day rectangle.
  209. // Returns:
  210. //     An int that contains the width of the day rectangle.
  211. //-----------------------------------------------------------------------
  212. int GetDayWidth() const;
  213. //-----------------------------------------------------------------------
  214. // Summary:
  215. //     This member function is used to obtain the height of a week's
  216. //     day rectangle.
  217. // Returns:
  218. //     An int that contains the height of a day rectangle.
  219. //-----------------------------------------------------------------------
  220. int GetDayHeidht() const;
  221. protected: // member function
  222. //-----------------------------------------------------------------------
  223. // Summary:
  224. //     Call this member function to adjust the first day of the week.
  225. // Remarks:
  226. //     The first day of the week depends on regions.
  227. //-----------------------------------------------------------------------
  228. virtual void AdjustFirstDayOfWeek();
  229. private:
  230. COleDateTime ShiftDateToCell_00(COleDateTime dtDate) const;
  231. public:
  232. //===========================================================================
  233. // Summary:
  234. //     This struct store a Week View layout.
  235. //===========================================================================
  236. struct XTP_WEEK_VIEW_LAYOUT
  237. {
  238. int m_nGridColumns;     // Number of columns in a week day grid.
  239. int m_nDayHeaderHeight; // Height of a day header.
  240. int m_nDayWidth;        // Width of day rectangle.
  241. int m_nDayHeidht;       // Height of day rectangle.
  242. };
  243. protected:
  244. //{{AFX_CODEJOCK_PRIVATE
  245. virtual XTP_WEEK_VIEW_LAYOUT& GetLayout();
  246. //}}AFX_CODEJOCK_PRIVATE
  247. protected: // data members
  248. XTP_WEEK_VIEW_LAYOUT m_LayoutX; // Layout data.
  249. int m_nCurrPos;         // Current scrollbar position.
  250. COleDateTime m_dtBeginDate; // First date of week (Monday's date).
  251. int m_nFirstDayOfWeekIndex; // Index for first weekday.
  252. };
  253. AFX_INLINE CXTPCalendarWeekView::XTP_WEEK_VIEW_LAYOUT& CXTPCalendarWeekView::GetLayout() {
  254. return m_LayoutX;
  255. }
  256. AFX_INLINE int CXTPCalendarWeekView::GetDayHeaderHeight() const {
  257. return m_LayoutX.m_nDayHeaderHeight;
  258. }
  259. AFX_INLINE COleDateTime CXTPCalendarWeekView::GetBeginDate() const {
  260. return m_dtBeginDate;
  261. }
  262. AFX_INLINE int CXTPCalendarWeekView::GetDayWidth() const {
  263. return m_LayoutX.m_nDayWidth;
  264. }
  265. AFX_INLINE int CXTPCalendarWeekView::GetDayHeidht() const {
  266. return m_LayoutX.m_nDayHeidht;
  267. }
  268. #endif // !defined(_XTPCALENDARWEEKVIEW_H__)