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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarMonthViewDay.h: interface for the CXTPCalendarMonthViewDay 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(_XTPCALENDARMONTHVIEWDAY_H__)
  22. #define _XTPCALENDARMONTHVIEWDAY_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPCalendarMonthViewEvent.h"
  28. #include "XTPCalendarViewDay.h"
  29. //{{AFX_CODEJOCK_PRIVATE
  30. class CXTPCalendarMonthView;
  31. //}}AFX_CODEJOCK_PRIVATE
  32. //===========================================================================
  33. // Summary: Forward definition of the structure.
  34. //===========================================================================
  35. struct XTP_CALENDAR_HITTESTINFO_MONTH_VIEW;
  36. //===========================================================================
  37. // Summary:
  38. //     This class represents a single resource view portion of the Calendar
  39. //     Month View.
  40. // Remarks:
  41. //     It represents a specific view of the CalendarView's associated events
  42. //     data grouped by one day and one resource group. And provides basic
  43. //     functionality on this data using user input through keyboard and mouse.
  44. //
  45. // See Also: CXTPCalendarMonthViewDay
  46. //===========================================================================
  47. class _XTP_EXT_CLASS CXTPCalendarMonthViewGroup : public CXTPCalendarViewGroupT<
  48. CXTPCalendarMonthViewDay,
  49. CXTPCalendarMonthViewEvent,
  50. XTP_CALENDAR_HITTESTINFO_MONTH_VIEW,
  51. CXTPCalendarMonthViewGroup>
  52. {
  53. public:
  54. //------------------------------------------------------------------------
  55. // Summary:
  56. //     Base class type definition.
  57. //------------------------------------------------------------------------
  58. typedef CXTPCalendarViewGroupT< CXTPCalendarMonthViewDay,
  59. CXTPCalendarMonthViewEvent,
  60. XTP_CALENDAR_HITTESTINFO_MONTH_VIEW,
  61. CXTPCalendarMonthViewGroup > TBase;
  62. //-----------------------------------------------------------------------
  63. // Summary:
  64. //     Default object constructor.
  65. //     Construct CXTPCalendarMonthViewGroup object.
  66. // Parameters:
  67. //     pViewDay - Pointer to CXTPCalendarMonthViewDay object.
  68. //-----------------------------------------------------------------------
  69. CXTPCalendarMonthViewGroup(CXTPCalendarMonthViewDay* pViewDay);
  70. //-----------------------------------------------------------------------
  71. // Summary:
  72. //     Default class destructor.
  73. // Remarks:
  74. //     Handles member items deallocation.
  75. //-----------------------------------------------------------------------
  76. virtual ~CXTPCalendarMonthViewGroup();
  77. //-----------------------------------------------------------------------
  78. // Summary:
  79. //     Call this member function to obtain the bounding rectangle of
  80. //     the tooltip space (currently this is only "click to add new appointment").
  81. //     Tooltip rectangle is calculated basing on the current mouse position
  82. // Returns:
  83. //     A CRect object with relative coordinates of the tooltip.
  84. // Remarks:
  85. //     This member function returns a rectangle calculated as a bottom
  86. //     cell rect of the day area where user currently holds a mouse on.
  87. //-----------------------------------------------------------------------
  88. virtual CRect GetTooltipRect(const CPoint& ptHit, const XTP_CALENDAR_HITTESTINFO& hitInfo);
  89. protected:
  90. //-----------------------------------------------------------------------
  91. // Summary:
  92. //     This member function is used to obtain a pointer to itself.
  93. // Remarks:
  94. //     Call this member function to get the "this" pointer.
  95. // Returns:
  96. //     Pointer to a CXTPCalendarMonthViewGroup.
  97. //-----------------------------------------------------------------------
  98. virtual CXTPCalendarMonthViewGroup* GetPThis();
  99. //-----------------------------------------------------------------------
  100. // Summary:
  101. //     This member function is used to fill a
  102. //     XTP_CALENDAR_HITTESTINFO_MONTH_VIEW structure.
  103. // Parameters:
  104. //     pHitTest - Pointer to XTP_CALENDAR_HITTESTINFO_MONTH_VIEW structure.
  105. // Remarks:
  106. //     Call this member function to gather hit-test information.
  107. // See Also: XTP_CALENDAR_HITTESTINFO_MONTH_VIEW
  108. //-----------------------------------------------------------------------
  109. virtual void FillHitTestEx(XTP_CALENDAR_HITTESTINFO_MONTH_VIEW* pHitTest);
  110. };
  111. AFX_INLINE CXTPCalendarMonthViewGroup* CXTPCalendarMonthViewGroup::GetPThis() {
  112. return this;
  113. }
  114. //===========================================================================
  115. // Summary:
  116. //     This class represents a day view portion of the CalendarMonthView.
  117. // Remarks:
  118. //     It represents a specific view of the CalendarView's associated events
  119. //     data grouped by one day and provides basic functionality on this
  120. //     data using user input through keyboard and mouse.
  121. //
  122. //          CXTPCalendarMonthViewDay is based on CXTPCalendarViewDayT template
  123. //          class. It inherits basic behavior from its parent and overlaps/add some
  124. //          methods to get its own behavior and look.
  125. //
  126. // See Also: CXTPCalendarViewDay, CXTPCalendarViewDayT
  127. //===========================================================================
  128. class _XTP_EXT_CLASS CXTPCalendarMonthViewDay : public CXTPCalendarViewDayT<
  129. CXTPCalendarMonthView,
  130. CXTPCalendarMonthViewGroup,
  131. XTP_CALENDAR_HITTESTINFO_MONTH_VIEW,
  132. CXTPCalendarMonthViewDay >
  133. {
  134. //{{AFX_CODEJOCK_PRIVATE
  135. friend class CXTPCalendarMonthViewEvent;
  136. DECLARE_DYNAMIC(CXTPCalendarMonthViewDay)
  137. //}}AFX_CODEJOCK_PRIVATE
  138. public:
  139. //------------------------------------------------------------------------
  140. // Summary:
  141. //     Base class type definition.
  142. //------------------------------------------------------------------------
  143. typedef CXTPCalendarViewDayT<   CXTPCalendarMonthView,
  144. CXTPCalendarMonthViewGroup,
  145. XTP_CALENDAR_HITTESTINFO_MONTH_VIEW,
  146. CXTPCalendarMonthViewDay >  TBase;
  147. // --------------------------------------------------------------------
  148. // Summary:
  149. //     Default object constructor. Construct a CXTPCalendarMonthViewDay
  150. //     object.
  151. // Parameters:
  152. //     pMonthView :     Pointer to CXTPCalendarMonthView object.
  153. //     nWeekIndex :     An int that contains a week view identifier.
  154. //     nWeekDayIndex :  An int that contains a day view identifier.
  155. // See Also:
  156. //     ~CXTPCalendarMonthViewDay()
  157. // --------------------------------------------------------------------
  158. CXTPCalendarMonthViewDay(CXTPCalendarMonthView* pMonthView, int nWeekIndex, int nWeekDayIndex);
  159. //-----------------------------------------------------------------------
  160. // Summary:
  161. //     Default class destructor.
  162. // Remarks:
  163. //     Handles member items deallocation.
  164. //-----------------------------------------------------------------------
  165. virtual ~CXTPCalendarMonthViewDay();
  166. //-----------------------------------------------------------------------
  167. // Summary:
  168. //     This member function is used to adjust the view's layout
  169. //     depending on the provided rectangle and then calls
  170. //     AdjustLayout() for all sub-items.
  171. // Parameters:
  172. //     pDC   - Pointer to a valid device context.
  173. //     rcDay - A CRect object that contains the coordinates for
  174. //             drawing the view.
  175. // Remarks:
  176. //     Call Populate(COleDateTime dtDayDate) prior to calling AdjustLayout().
  177. //     AdjustLayout2 is called by calendar control instead of AdjustLayout
  178. //     when theme is set.
  179. //-----------------------------------------------------------------------
  180. virtual void AdjustLayout(CDC* pDC, const CRect& rcDay);
  181. virtual void AdjustLayout2(CDC* pDC, const CRect& rcDay); //<COMBINE AdjustLayout>
  182. //-----------------------------------------------------------------------
  183. // Summary:
  184. //     This member function is used to draw the view contents using
  185. //     the specified device context.
  186. // Parameters:
  187. //     pDC - Pointer to a valid device context.
  188. // Remarks:
  189. //     Call AdjustLayout() before Draw()
  190. // See Also: AdjustLayout(CRect rcDay)
  191. //-----------------------------------------------------------------------
  192. virtual void Draw(CDC* pDC);
  193. //-----------------------------------------------------------------------
  194. // Summary:
  195. //     This member function is used to fill a
  196. //     XTP_CALENDAR_HITTESTINFO_MONTH_VIEW structure.
  197. // Parameters:
  198. //     pInfo - Pointer to XTP_CALENDAR_HITTESTINFO_MONTH_VIEW structure.
  199. // Remarks:
  200. //     Call this member function to gather hit-test information.
  201. // See Also: XTP_CALENDAR_HITTESTINFO_MONTH_VIEW
  202. //-----------------------------------------------------------------------
  203. virtual void FillHitTestEx(XTP_CALENDAR_HITTESTINFO_MONTH_VIEW* pInfo);
  204. //-----------------------------------------------------------------------
  205. // Summary:
  206. //     This member function is used to determine which view item,
  207. //     if any, is at the specified position index, and returns additional
  208. //     info in the _THitTest template object.
  209. // Parameters:
  210. //     pt       - A CPoint that contains the coordinates of the point test.
  211. //     pHitTest - A pointer to a _THitTest structure.
  212. // Remarks:
  213. //     Implements standard functionality for the HitTestEx method.
  214. // Returns:
  215. //     A BOOL. TRUE if the item is found. FALSE otherwise.
  216. // See Also: XTP_CALENDAR_HITTESTINFO
  217. //-----------------------------------------------------------------------
  218. virtual BOOL HitTestEx(CPoint pt, XTP_CALENDAR_HITTESTINFO_MONTH_VIEW* pHitTest);
  219. //-----------------------------------------------------------------------
  220. // Summary:
  221. //     This member function is used to calculate the day date bounding
  222. //     rectangle.
  223. // Remarks:
  224. //     Call this member function to determine the day view header's
  225. //     bounding rectangle.
  226. //-----------------------------------------------------------------------
  227. CRect CalcDayDateRect() const;
  228. //-----------------------------------------------------------------------
  229. // Summary:
  230. //     This member function is used to calculate the day view area in
  231. //     which to draw event views.
  232. // Remarks:
  233. //     Call this member function to determine day view area that is
  234. //     used for drawing the event views.
  235. // Returns:
  236. //     CRect object with rectangle coordinates.
  237. //-----------------------------------------------------------------------
  238. CRect GetDayEventsRect() const;
  239. protected:
  240. //-----------------------------------------------------------------------
  241. // Summary:
  242. //     This member function is used to processes left mouse button events.
  243. // Parameters:
  244. //     nFlags  - A UINT that is used to indicates whether various virtual
  245. //               keys are down.
  246. //     point   - A CPoint that specifies the x- and y- coordinates of the cursor.
  247. //               These coordinates are always relative to the
  248. //               upper-left corner of the window.
  249. // Remarks:
  250. //     This method is called by the CalendarControl when the user
  251. //     presses the left mouse button.
  252. //-----------------------------------------------------------------------
  253. virtual BOOL OnLButtonDown(UINT nFlags, CPoint point);
  254. //-----------------------------------------------------------------------
  255. // Summary:
  256. //     This member function is used to processes mouse movement events.
  257. // Parameters:
  258. //     nFlags  - A UINT that is used to indicate whether various virtual
  259. //               keys are down.
  260. //     point   - A CPoint that specifies the x- and y- coordinates of the cursor.
  261. //               These coordinates are always relative to the
  262. //               upper-left corner of the window.
  263. // Remarks:
  264. //     This method is called by the CalendarControl when the user
  265. //     moves the mouse cursor or stylus.
  266. //-----------------------------------------------------------------------
  267. virtual void OnMouseMove(UINT nFlags, CPoint point);
  268. //-----------------------------------------------------------------------
  269. // Summary:
  270. //     This member function is used to obtain a pointer to itself.
  271. // Remarks:
  272. //     Call this member function to get the "this" pointer.
  273. // Returns:
  274. //     Pointer to a CXTPCalendarMonthViewDay.
  275. //-----------------------------------------------------------------------
  276. virtual CXTPCalendarMonthViewDay* GetPThis();
  277. int m_nWeekIndex;    // Week identifier.
  278. int m_nWeekDayIndex; // Day identifier.
  279. };
  280. //===========================================================================
  281. AFX_INLINE CXTPCalendarMonthViewDay* CXTPCalendarMonthViewDay::GetPThis() {
  282. return this;
  283. }
  284. #endif // !defined(_XTPCALENDARMONTHVIEWDAY_H__)