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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarDayViewEvent.h: interface for the CXTPCalendarDayViewEvent 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(_XTPCALENDARVIEWEVENT_H__)
  22. #define _XTPCALENDARVIEWEVENT_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPCalendarViewEvent.h"
  28. #include "XTPCalendarViewDay.h"
  29. class CXTPCalendarEvent;
  30. class CXTPCalendarControl;
  31. class CXTPCalendarDayViewDay;
  32. class CXTPCalendarDayViewGroup;
  33. struct XTP_CALENDAR_HITTESTINFO_DAY_VIEW;
  34. //===========================================================================
  35. // Summary:
  36. //     This class represents an event view portion of the CalendarDayViewDay.
  37. // Remarks:
  38. //     This class is used to represent a specific view of the event associated
  39. //     data according to various view types and display settings. This class also
  40. //     provides basic functionality on the data by using user input through the
  41. //     keyboard and mouse.
  42. //
  43. //          CXTPCalendarDayViewEvent is based on CXTPCalendarDayEventT template
  44. //          class. It inherits basic behavior from CXTPCalendarDayEventT template
  45. //          class.  Furthermore, CXTPCalendarDayViewEvent overlaps and adds some
  46. //          new functionality to get its own behavior and appearance.
  47. //
  48. // See Also: CXTPCalendarViewEvent, CXTPCalendarViewEventT
  49. //===========================================================================
  50. class _XTP_EXT_CLASS CXTPCalendarDayViewEvent : public  CXTPCalendarViewEventT<
  51. CXTPCalendarDayViewGroup,
  52. XTP_CALENDAR_HITTESTINFO_DAY_VIEW >
  53. {
  54. //{{AFX_CODEJOCK_PRIVATE
  55. DECLARE_DYNAMIC(CXTPCalendarDayViewEvent)
  56. //}}AFX_CODEJOCK_PRIVATE
  57. public:
  58. //------------------------------------------------------------------------
  59. // Remarks:
  60. //     Base class type definition.
  61. //------------------------------------------------------------------------
  62. typedef CXTPCalendarViewEventT< CXTPCalendarDayViewGroup,
  63. XTP_CALENDAR_HITTESTINFO_DAY_VIEW > TBase;
  64. // -----------------------------------------------------
  65. // Summary:
  66. //     Default object constructor.
  67. // Parameters:
  68. //     pEvent     - Pointer to CXTPCalendarEvent.
  69. //     pViewGroup - Pointer to CXTPCalendarDayViewGroup object.
  70. // See Also:
  71. //     ~CXTPCalendarDayViewDay()
  72. // -----------------------------------------------------
  73. CXTPCalendarDayViewEvent(CXTPCalendarEvent* pEvent, CXTPCalendarDayViewGroup* pViewGroup);
  74. //-----------------------------------------------------------------------
  75. // Summary:
  76. //     Default class destructor.
  77. //-----------------------------------------------------------------------
  78. virtual ~CXTPCalendarDayViewEvent();
  79. // ------------------------------------------------------------------------------
  80. // Summary:
  81. //     This member function is used to adjust the view's layout depending
  82. //     on the provided rectangle and then calls AdjustLayout() for all
  83. //     sub-items.
  84. // Parameters:
  85. //     pDC               - Pointer to a valid device context.
  86. //     rcEventMax        - A CRect object that contains the rectangle dimensions
  87. //                         for drawing the view.
  88. //     nEventPlaceNumber - An int that is used as a sequential place number.
  89. // Remarks:
  90. //     Call Populate(COleDateTime dtDayDate) prior to adjust layout.
  91. //     AdjustLayout2 is called by calendar control instead of AdjustLayout
  92. //     when theme is set.
  93. // ------------------------------------------------------------------------------
  94. virtual void AdjustLayout(CDC* pDC, const CRect& rcEventMax, int nEventPlaceNumber);
  95. virtual void AdjustLayout2(CDC* pDC, const CRect& rcEventMax, int nEventPlaceNumber);//<COMBINE AdjustLayout>
  96. //-----------------------------------------------------------------------
  97. // Summary:
  98. //     This member function is used to perform additional adjustments
  99. //     in some kinds of views.
  100. // Remarks:
  101. //     Call this member function to perform additional adjustments after
  102. //     all adjustment activities are completed.
  103. //-----------------------------------------------------------------------
  104. virtual void OnPostAdjustLayout();
  105. //-----------------------------------------------------------------------
  106. // Summary:
  107. //     This member function is used to draw the view content using
  108. //     the specified device context.
  109. // Parameters:
  110. //     pDC - Pointer to a valid device context.
  111. // Remarks:
  112. //     Call AdjustLayout() before calling Draw().
  113. // See Also: AdjustLayout(CRect rcDay)
  114. //-----------------------------------------------------------------------
  115. virtual void Draw(CDC* pDC);
  116. //-----------------------------------------------------------------------
  117. // Summary:
  118. //     This member function is used to fill an
  119. //     XTP_CALENDAR_HITTESTINFO_DAY_VIEW structure.
  120. // Parameters:
  121. //     point - A CPoint object that contains the point to test.
  122. //     pInfo - A pointer to an XTP_CALENDAR_HITTESTINFO_DAY_VIEW structure.
  123. // Remarks:
  124. //     Call this member function to gather hit test information from
  125. //     the day view.
  126. // See Also: XTP_CALENDAR_HITTESTINFO_DAY_VIEW
  127. //-----------------------------------------------------------------------
  128. virtual BOOL HitTestEx(CPoint point, XTP_CALENDAR_HITTESTINFO_DAY_VIEW* pInfo);
  129. //-----------------------------------------------------------------------
  130. // Summary:
  131. //     Call this member function to determine if an event is "Multi Day".
  132. // Returns:
  133. //     TRUE if events is "Multi Day". FALSE otherwise.
  134. //-----------------------------------------------------------------------
  135. virtual BOOL IsMultidayEvent();
  136. //-----------------------------------------------------------------------
  137. // Summary:
  138. //     This member function is used to determine if the event is visible.
  139. // Remarks:
  140. //     This function calls IsVisibleEx(TRUE, TRUE, FALSE);
  141. // Returns:
  142. //     A BOOL that contains the value of the visibility of the event.
  143. //     TRUE if events is visible. FALSE otherwise.
  144. //-----------------------------------------------------------------------
  145. virtual BOOL IsVisible();
  146. //-----------------------------------------------------------------------
  147. // Summary:
  148. //     This member function is used to obtain the value of the visibility flag.
  149. // Parameters:
  150. //     bCheckTop     - A BOOL that indicates if the top bound visibility is checked.
  151. //     bCheckBottom  - A BOOL that indicates if the bottom bound visibility is checked.
  152. //     bTopAndBottom - A BOOL that indicates if the top and bottom bound visibility is checked.
  153. // Remarks:
  154. //     Checks visibility of boundaries.
  155. // Returns:
  156. //     TRUE if events is visible. FALSE otherwise.
  157. //-----------------------------------------------------------------------
  158. virtual BOOL IsVisibleEx(BOOL bCheckTop, BOOL bCheckBottom, BOOL bTopAndBottom);
  159. //-----------------------------------------------------------------------
  160. // Summary:
  161. //     This member function is used to create and show the subject editor.
  162. // Remarks:
  163. //     A subject is created only for the master event if the event is
  164. //     multi-day. If this member function is called for a slave event,
  165. //     then the editing process is passed to the master event.
  166. // Returns:
  167. //     A pointer to an CXTPCalendarViewEvent object for which the
  168. //     editor is created.
  169. //-----------------------------------------------------------------------
  170. virtual CXTPCalendarViewEvent* StartEditSubject();
  171. //-----------------------------------------------------------------------
  172. // Summary:
  173. //     This member function is used to obtain the event's bounding rectangle.
  174. // Remarks:
  175. //     Call this member function to get the event's bounding rectangle coordinates.
  176. // Returns:
  177. //     A CRect object containing the bounding rectangle coordinates.
  178. //-----------------------------------------------------------------------
  179. CRect GetEventsRect();
  180. //-----------------------------------------------------------------------
  181. // Summary:
  182. //     This member function is used to obtain the event's view position identifier.
  183. // Remarks:
  184. //     The position identifier is a sequential number used to identify the event views.
  185. // Returns:
  186. //     An int that contains the value of the position identifier.
  187. //-----------------------------------------------------------------------
  188. int GetEventPlacePos();
  189. //-----------------------------------------------------------------------
  190. // Summary:
  191. //     This member function is used to obtain the count of the event
  192. //     view positions.
  193. // Remarks:
  194. //     Call this member function to count the number of event view positions.
  195. // Returns:
  196. //     An int that contains the number of view positions.
  197. //-----------------------------------------------------------------------
  198. int GetEventPlaceCount();
  199. //-----------------------------------------------------------------------
  200. // Summary:
  201. //     This member function is used to set the event view place identifier.
  202. // Parameters:
  203. //     nPlace  - An int that contains the place identifier value.
  204. // Remarks:
  205. //     Call this member function to set the event view place identifier.
  206. //-----------------------------------------------------------------------
  207. void SetEventPlacePos(int nPlace);
  208. //-----------------------------------------------------------------------
  209. // Summary:
  210. //     This member function is used to set the event view places count.
  211. // Parameters:
  212. //     nPlaceCount - An int that contains the number of view places.
  213. // Remarks:
  214. //     Call this member function to set event view places count.
  215. //-----------------------------------------------------------------------
  216. void SetEventPlaceCount(int nPlaceCount);
  217. //-----------------------------------------------------------------------
  218. // Summary:
  219. //     This member function is used to determine if the event time
  220. //     should not be displayed.
  221. // Returns:
  222. //     A BOOL that contains the HideExentTime value.
  223. //     TRUE - if event time should not be displayed. Otherwise FALSE.
  224. //-----------------------------------------------------------------------
  225. BOOL HideEventTime() const;
  226. //-----------------------------------------------------------------------
  227. // Summary:
  228. //     This member function is used to obtain timeframe's bounding rectangle.
  229. // Remarks:
  230. //     Call this member function to get timeframe's bounding rectangle coordinates.
  231. // Returns:
  232. //     A CRect object containing the bounding rectangle coordinates.
  233. //-----------------------------------------------------------------------
  234. CRect GetTimeframeRect() const;
  235. protected:
  236. //-----------------------------------------------------------------------
  237. // Summary:
  238. //     This member function is used to obtain the editor window font.
  239. // Returns:
  240. //     Pointer to a CFont object that contains the editor window font.
  241. //-----------------------------------------------------------------------
  242. virtual CFont* GetSubjectEditorFont();
  243. //-----------------------------------------------------------------------
  244. // Summary:
  245. //     This member function is used to obtain the styles of the
  246. //     editor window.
  247. // Returns:
  248. //     A DWORD that contains the value of the window styles.
  249. //-----------------------------------------------------------------------
  250. virtual DWORD GetSubjectEditorStyles();
  251. // ------------------------------------------------------------
  252. // Summary:
  253. //     This function is used to change the event place number.
  254. // Parameters:
  255. //     nNewPlace :  new event place number.
  256. // ------------------------------------------------------------
  257. virtual void ChangeEventPlace(int nNewPlace);
  258. public:
  259. //-----------------------------------------------------------------------
  260. // Summary:
  261. //     This member function is used to perform adjustments of the subject
  262. //     editor area.
  263. // Remarks:
  264. //     Call this member function to perform adjustment of subject editor
  265. //     rectangle.
  266. //-----------------------------------------------------------------------
  267. virtual void AdjustSubjectEditor();
  268. //-----------------------------------------------------------------------
  269. // Summary:
  270. //     This member function is used to perform adjustments of the subject
  271. //     editor area. Inputs bUpdateView - A BOOL. TRUE if event view
  272. //     update is required.
  273. // Parameters:
  274. //     bUpdateView :  TRUE if event view update is required, otherwise FALSE.
  275. // Remarks:
  276. //     Call this member function to perform adjustment of subject editor
  277. //     rectangle.
  278. //-----------------------------------------------------------------------
  279. virtual void AdjustSubjectEditorEx(BOOL bUpdateView);
  280. public:
  281. CRect m_rcTimeframe;             // Rectangle area to display times.
  282. BOOL m_bHideEventTime;           // Flag determines if event time should not be displayed.
  283. };
  284. //////////////////////////////////////////////////////////////////////////
  285. AFX_INLINE int CXTPCalendarDayViewEvent::GetEventPlacePos() {
  286. return (int)LOWORD((DWORD)m_nEventPlaceNumber);
  287. }
  288. AFX_INLINE int CXTPCalendarDayViewEvent::GetEventPlaceCount() {
  289. return (int)HIWORD((DWORD)m_nEventPlaceNumber);
  290. }
  291. AFX_INLINE void CXTPCalendarDayViewEvent::SetEventPlacePos(int nPlace) {
  292. m_nEventPlaceNumber = (int)MAKELONG((WORD)nPlace, HIWORD((DWORD)m_nEventPlaceNumber));
  293. }
  294. AFX_INLINE void CXTPCalendarDayViewEvent::SetEventPlaceCount(int nPlaceCount) {
  295. m_nEventPlaceNumber = (int)MAKELONG(LOWORD((DWORD)m_nEventPlaceNumber), (WORD)nPlaceCount);
  296. }
  297. AFX_INLINE DWORD CXTPCalendarDayViewEvent::GetSubjectEditorStyles() {
  298. if (IsMultidayEvent()) {
  299. return  TBase::GetSubjectEditorStyles();
  300. }
  301. return (ES_NOHIDESEL | ES_MULTILINE | ES_AUTOVSCROLL);
  302. }
  303. AFX_INLINE BOOL CXTPCalendarDayViewEvent::HideEventTime() const {
  304. return m_bHideEventTime;
  305. }
  306. AFX_INLINE CRect CXTPCalendarDayViewEvent::GetTimeframeRect() const {
  307. return m_rcTimeframe;
  308. }
  309. #endif // !defined(_XTPCALENDARVIEWEVENT_H__)