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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarMonthView.h: interface for the CXTPCalendarMonthView 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(_XTPCALENDARMONTHVIEW_H__)
  22. #define _XTPCALENDARMONTHVIEW_H__
  23. #if _MSC_VER > 1000
  24. #pragma once
  25. #endif // _MSC_VER > 1000
  26. //}}AFX_CODEJOCK_PRIVATE
  27. #include "XTPCalendarView.h"
  28. #include "XTPCalendarMonthViewDay.h"
  29. class CXTPCalendarMonthView;
  30. //===========================================================================
  31. // Summary:
  32. //     Define minimum count of weeks which can be shown in the
  33. //     Month View.
  34. // See Also: CXTPCalendarMonthView::CMonthViewGrid::GetWeeksCount,
  35. //           CXTPCalendarMonthView::CMonthViewGrid::SetWeeksCount,
  36. //           XTP_CALENDAR_MONTHVIEW_SHOW_WEEKS_MAX
  37. //===========================================================================
  38. #define XTP_CALENDAR_MONTHVIEW_SHOW_WEEKS_MIN   2
  39. //===========================================================================
  40. // Summary:
  41. //     Define maximum count of weeks which can be shown in the
  42. //     Month View.
  43. // See Also: CXTPCalendarMonthView::CMonthViewGrid::GetWeeksCount,
  44. //           CXTPCalendarMonthView::CMonthViewGrid::SetWeeksCount,
  45. //           XTP_CALENDAR_MONTHVIEW_SHOW_WEEKS_MIN
  46. //===========================================================================
  47. #define XTP_CALENDAR_MONTHVIEW_SHOW_WEEKS_MAX   6
  48. //===========================================================================
  49. // Summary:
  50. //     This class implements a specific view portion of the Calendar
  51. //     control - called <b>Month view</b>.
  52. // Remarks:
  53. //     The Month can contain one or more weeks, placed in
  54. //     a column. Each week consist of 7 days, as a normal week.
  55. //     Weekend days of the week can be drawn compressed, which means
  56. //     that 2 weekend days will be drawn in a rectangle of a usual day.
  57. //     Each day is represented by a CXTPCalendarMonthViewDay class.
  58. //
  59. // See Also: CXTPCalendarView, CXTPCalendarDayView, CXTPCalendarWeekView,
  60. //          CXTPCalendarMonthViewDay, CXTPCalendarMonthViewEvent
  61. //===========================================================================
  62. class _XTP_EXT_CLASS CXTPCalendarMonthView : public CXTPCalendarViewT<
  63. CXTPCalendarMonthViewDay,
  64. XTP_CALENDAR_HITTESTINFO_MONTH_VIEW>
  65. {
  66. //{{AFX_CODEJOCK_PRIVATE
  67. friend class CXTPCalendarMonthViewDay;
  68. friend class CXTPCalendarMonthViewEvent;
  69. DECLARE_DYNAMIC(CXTPCalendarMonthView)
  70. //}}AFX_CODEJOCK_PRIVATE
  71. public:
  72. //------------------------------------------------------------------------
  73. // Remarks:
  74. //     Base class type definition
  75. //------------------------------------------------------------------------
  76. typedef CXTPCalendarViewT< CXTPCalendarMonthViewDay,
  77. XTP_CALENDAR_HITTESTINFO_MONTH_VIEW> TBase;
  78. //-----------------------------------------------------------------------
  79. // Summary:
  80. //     Default object constructor.
  81. // Parameters:
  82. //     pCalendarControl - Pointer to a CXTPCalendarControl object.
  83. // See Also: ~CXTPCalendarMonthView()
  84. //-----------------------------------------------------------------------
  85. CXTPCalendarMonthView(CXTPCalendarControl* pCalendarControl);
  86. //-----------------------------------------------------------------------
  87. // Summary:
  88. //     Default class destructor.
  89. // Remarks:
  90. //     Handles member item deallocation.
  91. //-----------------------------------------------------------------------
  92. virtual ~CXTPCalendarMonthView();
  93. //-----------------------------------------------------------------------
  94. // Summary:
  95. //     This member function is used to populate the view with data
  96. //     for all items contained in the view.
  97. //-----------------------------------------------------------------------
  98. virtual void Populate();
  99. //-----------------------------------------------------------------------
  100. // Summary:
  101. //     This member function is used to adjust the view's layout
  102. //     depending on the window's client size and then calls AdjustLayout()
  103. //     for all sub-items.
  104. // Parameters:
  105. //     pDC                   - Pointer to a valid device context.
  106. //     rcView                - A CRect object that contains the
  107. //                             coordinates used to draw the view.
  108. //     bCallPostAdjustLayout - A BOOL.  Flag used to call for additional
  109. //                             adjustments.
  110. // Remarks:
  111. //     Call Populate() prior to AdjustLayout.
  112. //     AdjustLayout2 is called by calendar control instead of AdjustLayout
  113. //     when theme is set.
  114. //-----------------------------------------------------------------------
  115. virtual void AdjustLayout(CDC* pDC, const CRect& rcView, BOOL bCallPostAdjustLayout = TRUE);
  116. virtual void AdjustLayout2(CDC* pDC, const CRect& rcView, BOOL bCallPostAdjustLayout = TRUE);//<COMBINE AdjustLayout>
  117. //-----------------------------------------------------------------------
  118. // Summary:
  119. //     This member function is used to show the specified day in the
  120. //     calendar view.
  121. // Parameters:
  122. //     date - A COleDateTime object that contains the date to show.
  123. //     bSelect - TRUE to select the specified day after showing,
  124. //               FALSE otherwise. TRUE is the default value.
  125. // Remarks:
  126. //     Call this member function to show only the specified day in the
  127. //     calendar view.
  128. //-----------------------------------------------------------------------
  129. virtual void ShowDay(const COleDateTime& date, BOOL bSelect = TRUE);
  130. //-----------------------------------------------------------------------
  131. // Summary:
  132. //     This member function is used to retrieve information about the
  133. //     current scroll bar state.
  134. // Parameters:
  135. //     pSI - A SCROLLINFO pointer. Pointer to a scrollbar information
  136. //           structure.
  137. //-----------------------------------------------------------------------
  138. virtual BOOL GetScrollBarInfoV(SCROLLINFO* pSI);
  139. //-----------------------------------------------------------------------
  140. // Summary:
  141. //     This member function is used to scroll the contents of a view.
  142. // Parameters:
  143. //     nPos     - An int that contains the position value.
  144. //     nPos_raw - An int that contains the raw position value.
  145. // Remarks:
  146. //     ScrollV internally uses Populate() to fill new view data.
  147. //     Note: nPos is not used at this time.  It is reserved for future use.
  148. // See Also: Populate(), GetScrollBarInfoV.
  149. //-----------------------------------------------------------------------
  150. virtual void ScrollV(int nPos, int nPos_raw);
  151. //-----------------------------------------------------------------------
  152. // Summary:
  153. //     This member function is used to draw the view content using
  154. //     the specified device context.
  155. // Parameters:
  156. //     pDC - Pointer to a valid device context.
  157. // Remarks:
  158. //     Call AdjustLayout() before Draw().
  159. //     Draw2 is called by calendar control instead of Draw when theme
  160. //     is set.
  161. // See Also: AdjustLayout().
  162. //-----------------------------------------------------------------------
  163. virtual void Draw(CDC* pDC);
  164. virtual void Draw2(CDC* pDC); //<COMBINE Draw>
  165. //-----------------------------------------------------------------------
  166. // Summary:
  167. //     This member function is used to obtain the event caption format flags.
  168. // Remarks:
  169. //     Call this member function to obtain event caption format flags.
  170. //     Event caption format flags are stored in a packed form. Use bitwise
  171. //     operations to determine each flag state.
  172. // Returns:
  173. //     Integer value containing flags.
  174. //-----------------------------------------------------------------------
  175. virtual int GetEventCaptionFormat() const;
  176. //-----------------------------------------------------------------------
  177. // Summary:
  178. //     This member function is used to obtain the width necessary to display
  179. //     the event's time.
  180. // Returns:
  181. //     An int that contains the width as an integer value.
  182. //-----------------------------------------------------------------------
  183. virtual int GetEventTimeWidth() const;
  184. //-----------------------------------------------------------------------
  185. // Summary:
  186. //     This member function is used to processes mouse movement events.
  187. // Parameters:
  188. //     nFlags  - A UINT that is used to indicate whether various virtual
  189. //               keys are down.
  190. //     point   - A CPoint that specifies the x- and y- coordinates of the cursor.
  191. //               These coordinates are always relative to the
  192. //               upper-left corner of the window.
  193. // Remarks:
  194. //     This method is called by the CalendarControl when the user
  195. //     moves the mouse cursor or stylus.
  196. //-----------------------------------------------------------------------
  197. virtual void OnMouseMove(UINT nFlags, CPoint point);
  198. //-----------------------------------------------------------------------
  199. // Summary:
  200. //     This member function is used to processes left mouse button events.
  201. // Parameters:
  202. //     nFlags  - A UINT that is used to indicates whether various virtual
  203. //               keys are down.
  204. //     point   - A CPoint that specifies the x- and y- coordinates of the cursor.
  205. //               These coordinates are always relative to the
  206. //               upper-left corner of the window.
  207. // Remarks:
  208. //     This method is called by the CalendarControl when the user
  209. //     presses the left mouse button.
  210. //-----------------------------------------------------------------------
  211. virtual BOOL OnLButtonDown(UINT nFlags, CPoint point);
  212. //-----------------------------------------------------------------------
  213. // Summary:
  214. //     This member function is used to process keyboard events.
  215. // Parameters:
  216. //     nChar   - A UINT. Virtual key code of the given key.
  217. //     nRepCnt - A UINT. Number of times the keystroke is repeated as
  218. //               a result of the user holding down the key.
  219. //     nFlags  - A UINT. Scan code, key-transition code, previous key state,
  220. //               and context code.
  221. // Remarks:
  222. //     This method is called by the CalendarControl when the user
  223. //     presses keys on the keyboard.
  224. //-----------------------------------------------------------------------
  225. virtual void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  226. //-----------------------------------------------------------------------
  227. // Summary:
  228. //     This member function is used to obtain the view's day object by
  229. //     the given index.
  230. // Parameters:
  231. //     nIndex  - An int. Day view index in the view collection.
  232. // Remarks:
  233. //     Index numbers start with 0 and cannot be negative.
  234. // Returns:
  235. //     Pointer to a CXTPCalendarMonthViewDay object.
  236. // See Also: GetViewDayCount()
  237. //-----------------------------------------------------------------------
  238. virtual CXTPCalendarMonthViewDay* GetViewDay(int nIndex);
  239. //-----------------------------------------------------------------------
  240. // Summary:
  241. //     Call this member function to obtain the date of a day view by the
  242. //     day's index.
  243. // Parameters:
  244. //     nIndex - An int. Day view index in the view collection.
  245. // Remarks:
  246. //     Index numbers start with 0 and cannot be negative.
  247. // Returns:
  248. //     A COleDateTime object that contains the day view date and time.
  249. // See Also: GetViewDayCount()
  250. //-----------------------------------------------------------------------
  251. virtual COleDateTime GetViewDayDate(int nIndex);
  252. //-----------------------------------------------------------------------
  253. // Summary:
  254. //     This member function is used to obtain week day header text.
  255. // Parameters:
  256. //     pstrText - [in, out] Pointer to item text;
  257. //     nWeekDay - Week day number as: 1 - Sunday, 2 - Monday, ... 7 - Satyrday.
  258. // Remarks:
  259. //     If AskItemTextFlags has xtpCalendarItemText_MonthViewWeekDayHeader
  260. //     flag set - XTP_NC_CALENDAR_GETITEMTEXT notification is sent to
  261. //     customize standard text.
  262. // See Also:
  263. //     XTPCalendarGetItemText,XTPCalendarGetItemTextEx,
  264. //     XTP_NC_CALENDAR_GETITEMTEXT,
  265. //     CXTPCalendarControl::GetAskItemTextFlags,
  266. //     CXTPCalendarControlPaintManager::GetAskItemTextFlags,
  267. //     CXTPCalendarControlPaintManager::SetAskItemTextFlags,
  268. //     CXTPCalendarTheme::GetAskItemTextFlags,
  269. //     CXTPCalendarTheme::SetAskItemTextFlags
  270. //-----------------------------------------------------------------------
  271. virtual void GetWeekDayTextIfNeed(CString* pstrText, int nWeekDay);
  272. protected:
  273. //-----------------------------------------------------------------------
  274. // Summary:
  275. //     This member function is used to obtain the format string of a
  276. //     day date.
  277. // Parameters:
  278. //     dtDay - A COleDateTime object that contains the date to be formatted.
  279. //     bLong - A BOOL. Determines whether to apply a long date format.
  280. // Remarks:
  281. //     Call this member function to obtain the date in a form appropriate
  282. //     to display in the day header text.
  283. // Returns:
  284. //     CString object with the formatted date.
  285. // See Also: GetViewDayCount()
  286. //-----------------------------------------------------------------------
  287. CString _FormatDayDate(COleDateTime dtDay, BOOL bLong);
  288. //-----------------------------------------------------------------------
  289. // Summary:
  290. //     This member function is used to calculate the view's date
  291. //     format based on the current locale.
  292. // Parameters:
  293. //     pDC - Pointer to a valid device context.
  294. //-----------------------------------------------------------------------
  295. void _CalculateDateFormats(CDC* pDC);
  296. //-----------------------------------------------------------------------
  297. // Summary:
  298. //      This member function is used to build day header date format
  299. //      default strings.
  300. // Remarks:
  301. //      This member function read locale settings and fill
  302. //      m_strDayHeaderFormatDefaultXXX members.
  303. // See Also:
  304. //      _CalculateDateFormats(), CXTPCalendarView::_ReadDefaultHeaderFormats(),
  305. //      m_strDayHeaderFormatDefaultLong, m_strDayHeaderFormatDefaultMiddle,
  306. //      m_strDayHeaderFormatDefaultShort, m_strDayHeaderFormatDefaultShortest.
  307. //-----------------------------------------------------------------------
  308. void _ReadDefaultDateFormats();
  309. //-----------------------------------------------------------------------
  310. // Summary:
  311. //     This member function is used to parse the format string into tokens.
  312. // Parameters:
  313. //     strDateFormat - A CString that contains the string to parse.
  314. //     rarTokens     - A CStringArray that contains the resultant token array.
  315. //-----------------------------------------------------------------------
  316. void _SplitDateFormat(const CString& strDateFormat, CStringArray& rarTokens);
  317. //-----------------------------------------------------------------------
  318. // Summary:
  319. //     This member function is used to calculate the event view's date
  320. //     format based on the current locale.
  321. // Parameters:
  322. //     pDC - Pointer to a valid device context.
  323. //-----------------------------------------------------------------------
  324. void _CalculateEventCaptionFormat(CDC* pDC);
  325. CString m_strLongDateFormat;    // String of the long date format.
  326. CString m_strSmallDateFormat;   // String of the short date format.
  327. int     m_nEventCaptionFormat;  // Event caption format flags are stored in packed form by bitwise operations.
  328. int     m_nEventTimeWidth;      // width of the area to display the event times.
  329. XTP_CALENDAR_MONTHVIEW_DAYPOS m_DayPOS_LastSelected; // Last selected day positions.
  330. public:
  331. //=======================================================================
  332. // Remarks:
  333. //     This helper class implements a grid for the month view.
  334. // See Also: CXTPCalendarMonthView overview
  335. //=======================================================================
  336. class _XTP_EXT_CLASS CMonthViewGrid
  337. {
  338. public:
  339. //-----------------------------------------------------------------------
  340. // Summary:
  341. //     Default class constructor.
  342. // Parameters:
  343. //     pView - A CXTPCalendarMonthView pointer to the parent view class.
  344. //-----------------------------------------------------------------------
  345. CMonthViewGrid(CXTPCalendarMonthView* pView);
  346. //-----------------------------------------------------------------------
  347. // Summary:
  348. //     Default class destructor.
  349. // Remarks:
  350. //     Handles member item deallocation.
  351. //-----------------------------------------------------------------------
  352. virtual ~CMonthViewGrid();
  353. //-----------------------------------------------------------------------
  354. // Summary:
  355. //     This member function is used to obtain the date of the first
  356. //     cell (cell [0, 0]) in the grid.
  357. // Returns:
  358. //     A COleDateTime object that contains the date of the first cell
  359. //     (cell [0, 0]) in the grid.
  360. // See Also: SetBeginDate, ShiftDateToCell_00
  361. //-----------------------------------------------------------------------
  362. COleDateTime GetBeginDate() const;
  363. //-----------------------------------------------------------------------
  364. // Summary:
  365. //     This member function is used to set the start view date.
  366. // Parameters:
  367. //     dtBeginDate - A COleDateTime object that contains the start view date.
  368. // Remarks:
  369. //     This date will be adjusted (shifted) to be the first cell
  370. //     (cell [0, 0]) date in the grid.
  371. // See Also: GetBeginDate, ShiftDateToCell_00
  372. //-----------------------------------------------------------------------
  373. void         SetBeginDate(COleDateTime dtBeginDate);
  374. //-----------------------------------------------------------------------
  375. // Summary:
  376. //     This member function is used to shift the specified date to
  377. //     the first cell date in the grid.
  378. // Parameters:
  379. //     dtDate - A COleDateTime object that contains the date to shift.
  380. // Returns:
  381. //     A COleDateTime object that contains the date that was shifted
  382. //     to the first cell in the grid.
  383. // See Also: GetBeginDate, SetBeginDate
  384. //-----------------------------------------------------------------------
  385. COleDateTime ShiftDateToCell_00(COleDateTime dtDate);
  386. //-----------------------------------------------------------------------
  387. // Summary:
  388. //     This member function is used to obtain the weeks (rows) count
  389. //     in the grid.
  390. // Returns:
  391. //     An int that contains the number of weeks (rows) in the grid.
  392. // See Also: SetWeeksCount
  393. //-----------------------------------------------------------------------
  394. int GetWeeksCount() const;
  395. //-----------------------------------------------------------------------
  396. // Summary:
  397. //     This member function is used to set the number of weeks that are
  398. //     shown in the grid (Month View).
  399. // Parameters:
  400. //     nWeeks - An int that contains the number of weeks shown in the
  401. //              grid. Minimum and maximum values are defined as
  402. //              XTP_CALENDAR_MONTHVIEW_SHOW_WEEKS_MIN and
  403. //              XTP_CALENDAR_MONTHVIEW_SHOW_WEEKS_MAX.
  404. // See Also: GetWeeksCount, XTP_CALENDAR_MONTHVIEW_SHOW_WEEKS_MIN,
  405. //           XTP_CALENDAR_MONTHVIEW_SHOW_WEEKS_MAX
  406. //-----------------------------------------------------------------------
  407. void SetWeeksCount(int nWeeks);
  408. //-----------------------------------------------------------------------
  409. // Summary:
  410. //     This member function is used to retrieve the specified day date.
  411. // Parameters:
  412. //     nWeekIndex    - An int that contains the index of the week.
  413. //                     Valid values are from 0 to GetWeeksCount()-1.
  414. //     nWeekDayIndex - An int that contains the index of the day cell
  415. //                      in the week. Valid values are from 0 to 6.
  416. // Returns:
  417. //     A COleDateTime object that contains the specified day date.
  418. // See Also: GetWeeksCount, SetWeeksCount
  419. //-----------------------------------------------------------------------
  420. COleDateTime GetDayDate(int nWeekIndex, int nWeekDayIndex) const;
  421. //-----------------------------------------------------------------------
  422. // Summary:
  423. //     This member function is used to obtain the bounding rectangle
  424. //     of the day cell.
  425. // Parameters:
  426. //     nWeekIndex      - An int that contains the index of the week.
  427. //                       Valid values are from 0 to GetWeeksCount()-1.
  428. //     nWeekDayIndex   - An int that contains the index of the day cell
  429. //                       in the week. Valid values are from 0 to 6.
  430. //     bIncludeBorders - A BOOL. If TRUE, then borders between days are
  431. //                       included in the bounding rectangle coordinates.
  432. //                       If FALSE, then borders are not included in the
  433. //                       bounding rectangle coordinates.
  434. // Returns:
  435. //     A CRect object that contains the bounding rectangle coordinates
  436. //     of the day cell.
  437. // See Also: GetCelRect, GetWeeksCount, CRect
  438. //-----------------------------------------------------------------------
  439. CRect GetDayRect(int nWeekIndex, int nWeekDayIndex, BOOL bIncludeBorders = FALSE) const;
  440. //-----------------------------------------------------------------------
  441. // Summary:
  442. //     This member function is used to obtain the bounding rectangle
  443. //     of the full grid cell.
  444. // Parameters:
  445. //     nWeekIndex      - An int that contains the index of the week.
  446. //                       Valid values are from 0 to GetWeeksCount()-1.
  447. //     nColIndex       - An int that contains the index of the cell in the grid.
  448. //                       Valid values are from 0 to GetColsCount()-1.
  449. //     bIncludeBorders - A BOOL. If TRUE, then borders between cells
  450. //                       are included in the bounding rectangle coordinates.
  451. //                       If FALSE, then the borders between cells are not
  452. //                       included in the bounding rectangle coordinates.
  453. // Remarks:
  454. //     Full grid cell means day cell for no compressed days or
  455. //     cell included 2 day cells for compressed Sat/Sun if such
  456. //     option is ON.
  457. // Returns:
  458. //     A CRect object that contains the bounding rectangle coordinates
  459. //     of the full grid cell.
  460. // See Also: GetDayRect, GetWeeksCount, GetColsCount, CRect
  461. //-----------------------------------------------------------------------
  462. CRect GetCelRect(int nWeekIndex, int nColIndex, BOOL bIncludeBorders = FALSE) const;
  463. //-----------------------------------------------------------------------
  464. // Summary:
  465. //     This member function is used to obtain the column for the
  466. //     specified week day.
  467. // Parameters:
  468. //     nWeekDayIndex - An in that contains the index of the week day.
  469. //                     1-Sunday, 2-Monday, ....
  470. // Remarks:
  471. //     If the "compress weekend days" option is ON then, only one
  472. //     column number is returned for Saturday and Sunday.
  473. // Returns:
  474. //     An in that contains the column number for the specified week day.
  475. // See Also: GetColsCount, GetWeekDayForColIndex
  476. //-----------------------------------------------------------------------
  477. int GetWeekDayCol(int nWeekDayIndex) const;
  478. //-----------------------------------------------------------------------
  479. // Summary:
  480. //     This member function is used to obtain the week day index for the
  481. //     specified column.
  482. // Parameters:
  483. //     nColIdx - An in that contains the index of the week day.
  484. //                     1-Sunday, 2-Monday, ....
  485. // Remarks:
  486. //     If the "compress weekend days" option is ON then,
  487. //     7 (Saturday) returned for the compressed column.
  488. // Returns:
  489. //     Index of the week day as: 1-Sunday, 2-Monday, ....
  490. // See Also: GetColsCount, GetWeekDayCol
  491. //-----------------------------------------------------------------------
  492. int GetWeekDayForColIndex(int nColIdx) const;
  493. //-----------------------------------------------------------------------
  494. // Summary:
  495. //     This member function is used to obtain the number of columns
  496. //     that are displayed in the Month View.
  497. // Remarks:
  498. //     If the "compress weekend days" option is ON, then 6 is returned,
  499. //     otherwise 7.
  500. // Returns:
  501. //     An int that contains the number of columns that are displayed
  502. //     in the Month View.
  503. // See Also: GetWeekDayCol
  504. //-----------------------------------------------------------------------
  505. int GetColsCount() const;
  506. //-----------------------------------------------------------------------
  507. // Summary:
  508. //     This member function is used to obtain the number of pixels in
  509. //     the height of the Month View week days columns header.
  510. // Returns:
  511. //     An int that contains the value of the columns header height in pixels.
  512. //-----------------------------------------------------------------------
  513. int GetColHeaderHeight() const;
  514. //-----------------------------------------------------------------------
  515. // Summary:
  516. //     This member function is used to set the height of the Month View
  517. //     week days columns header.
  518. // Parameters:
  519. //     nHeight - A new height value in pixels.
  520. // Remarks:
  521. //     Should be used in visual themes AdjustLayout processing.
  522. //-----------------------------------------------------------------------
  523. void SetColHeaderHeight(int nHeight);
  524. //-----------------------------------------------------------------------
  525. // Summary:
  526. //     This member function is used to scroll the contents of a grid.
  527. // Parameters:
  528. //     nPos - An int that contains the position value.
  529. // Remarks:
  530. //     This member function calculates the date time that corresponds
  531. //     with the current scroll bar position.  Next, the function adjusts
  532. //     the dates in the grid so that the date that is associated with the
  533. //     current scroll bar position is placed in the beginning cell of the
  534. //     grid.
  535. // See Also: GetScrollPos, CXTPCalendarMonthView::ScrollV,
  536. //           CXTPCalendarMonthView::GetScrollBarInfoV.
  537. //-----------------------------------------------------------------------
  538. void ScrollV(int nPos);
  539. //-----------------------------------------------------------------------
  540. // Summary:
  541. //     This member function is used to obtain the current scrolling
  542. //     position.
  543. // Returns:
  544. //     An int that contains the current scrolling position.
  545. // See Also: ScrollV, CXTPCalendarMonthView::ScrollV,
  546. //           CXTPCalendarMonthView::GetScrollBarInfoV.
  547. //-----------------------------------------------------------------------
  548. int GetScrollPos();
  549. //-----------------------------------------------------------------------
  550. // Summary:
  551. //     This member function is used to adjust the grid's layout
  552. //     depending on the window's client size and then
  553. //     calls AdjustLayout() for all sub-items.
  554. // Parameters:
  555. //     pDC - Pointer to a valid device context.
  556. // See Also: CXTPCalendarMonthView::AdjustLayout
  557. //-----------------------------------------------------------------------
  558. void AdjustLayout(CDC* pDC);
  559. //-----------------------------------------------------------------------
  560. // Summary:
  561. //     This member function is used to draw the grid content using the
  562. //     specified device context.
  563. // Parameters:
  564. //     pDC - Pointer to a valid device context.
  565. // Remarks:
  566. //     Call CXTPCalendarMonthView::AdjustLayout before Draw().
  567. // See Also: CXTPCalendarMonthView::Draw,
  568. //           CXTPCalendarMonthView::AdjustLayout.
  569. //-----------------------------------------------------------------------
  570. void Draw(CDC* pDC);
  571. //-----------------------------------------------------------------------
  572. // Summary:
  573. //     This member function is used to adjust the grid's columns
  574. //     depending on the FirstDayOfWeek calendar control option value.
  575. // See Also: CXTPCalendarControl::GetFirstDayOfWeek
  576. //-----------------------------------------------------------------------
  577. void AdjustFirstDayOfWeek();
  578. //-----------------------------------------------------------------------
  579. // Summary:
  580. //     This member function is used to adjust the grid's columns and rows.
  581. // Parameters:
  582. //     rcRect - A rectangle for grid.
  583. // See Also: AdjustDays
  584. //-----------------------------------------------------------------------
  585. void AdjustGrid(const CRect& rcRect);
  586. //-----------------------------------------------------------------------
  587. // Summary:
  588. //     This member function is used to call AdjustLayout for each day in
  589. //     days collection with corresponding day rect.
  590. // Parameters:
  591. //     pDC - Pointer to a valid device context.
  592. // See Also: AdjustEvents
  593. //-----------------------------------------------------------------------
  594. void AdjustDays(CDC* pDC);
  595. //-----------------------------------------------------------------------
  596. // Summary:
  597. //     This member function is used to adjust the event views layout.
  598. // Parameters:
  599. //     pDC - Pointer to a valid device context.
  600. // See Also: AdjustLayout, CXTPCalendarMonthView::AdjustLayout
  601. //-----------------------------------------------------------------------
  602. void AdjustEvents(CDC* pDC);
  603. //-----------------------------------------------------------------------
  604. // Summary:
  605. //     This function is used to obtain the view day object that is
  606. //     associated with the given indexes.
  607. // Parameters:
  608. //     nWeekIndex    - An int that contains the index of the week.
  609. //                     Valid values are from 0 to GetWeeksCount()-1.
  610. //     nWeekDayIndex - An int that contains the index of the day cell
  611. //                     in the week.
  612. // Returns:
  613. //     A pointer to a CXTPCalendarMonthViewDay object that contains the
  614. //     view day that is associated with the given indexes.
  615. // See Also: CXTPCalendarMonthView::GetViewDay
  616. //-----------------------------------------------------------------------
  617. CXTPCalendarMonthViewDay* GetViewDay(int nWeekIndex, int nWeekDayIndex);
  618. //-----------------------------------------------------------------------
  619. // Summary:
  620. //     This member function is used to obtain the maximum number of
  621. //     available day positions.
  622. // Returns:
  623. //     A XTP_CALENDAR_MONTHVIEW_DAYPOS object that contains the
  624. //     maximum number of available day positions.
  625. // See Also: XTP_CALENDAR_MONTHVIEW_DAYPOS,
  626. //           XTP_CALENDAR_HITTESTINFO_MONTH_VIEW,
  627. //           CXTPCalendarMonthView::m_DayPOS_LastSelected
  628. //-----------------------------------------------------------------------
  629. XTP_CALENDAR_MONTHVIEW_DAYPOS GetMaxDayPOS();
  630. //-----------------------------------------------------------------------
  631. // Summary:
  632. //     This member function is used to obtain the First Day Of Week index.
  633. // Returns:
  634. //     First Day Of Week index. (1-Sunday, 2-Monday ...)
  635. // See Also: GetWeekDayCol
  636. //-----------------------------------------------------------------------
  637. int GetFirstDayOfWeek() const;
  638. protected:
  639. COleDateTime m_dtBeginDate;     // First Cell (cell [0, 0]) date in the grid.
  640. int m_nWeeksCount;              // The number of weeks that are displayed.
  641. int m_nColHeaderHeight;         // Column header height in pixels.
  642. CStringArray m_arColHeaderText; // Array of columns (week days) headers names.
  643. CUIntArray m_arColsLeftX;       // Array of columns left borders positions.
  644. CUIntArray m_arRowsTopY;        // Array of rows top borders positions.
  645. int m_nFirstDayOfWeekIndex;     // First Day Of Week index: 1-Sunday, 2-Monday ...
  646. //-----------------------------------------------------------------------
  647. // Summary:
  648. //     This member function is used to adjust the grid's column header layout.
  649. // Parameters:
  650. //     pDC - Pointer to a valid device context.
  651. // See Also: AdjustLayout, CXTPCalendarMonthView::AdjustLayout
  652. //-----------------------------------------------------------------------
  653. void AdjustHeader(CDC* pDC);
  654. //-----------------------------------------------------------------------
  655. // Summary:
  656. //     This member function is used to calculate the date for a
  657. //     middle scrollbar position.
  658. // Returns:
  659. //     A COleDateTime object that contains the date for a middle
  660. //     scrollbar position.
  661. // See Also: ScrollV, GetScrollPos, CXTPCalendarMonthView::ScrollV,
  662. //           CXTPCalendarMonthView::GetScrollBarInfoV.
  663. //-----------------------------------------------------------------------
  664. COleDateTime GetMiddleScrollBeginDate();
  665. protected:
  666. CXTPCalendarMonthView* m_pView; // Pointer to the parent view class.
  667. };
  668. friend class CMonthViewGrid;
  669. //-----------------------------------------------------------------------
  670. // Summary:
  671. //     This member function is used to obtain the Month View days
  672. //     grid object.
  673. // Returns:
  674. //     A pointer to a CMonthViewGrid object that contains the Month
  675. //     View days grid object.
  676. // See Also: CMonthViewGrid
  677. //-----------------------------------------------------------------------
  678. CMonthViewGrid* GetGrid();
  679. protected:
  680. CMonthViewGrid* m_pGrid; // Pointer to the grid object.
  681. };
  682. //===========================================================================
  683. //XTP_CALENDAR_MONTHVIEW_DAYPOS
  684. //-----------------------------
  685. AFX_INLINE int XTP_CALENDAR_MONTHVIEW_DAYPOS::GetPOS() {
  686. int nPOS = nWeekIndex * 7 + nWeekDayIndex;
  687. return nPOS;
  688. }
  689. AFX_INLINE void XTP_CALENDAR_MONTHVIEW_DAYPOS::SetPOS(int nWidx, int nWDidx) {
  690. nWeekIndex = nWidx;
  691. nWeekDayIndex = nWDidx;
  692. }
  693. AFX_INLINE void XTP_CALENDAR_MONTHVIEW_DAYPOS::SetPOS(int nPOS) {
  694. nWeekIndex = nPOS / 7;
  695. nWeekDayIndex = nPOS % 7;
  696. }
  697. AFX_INLINE BOOL XTP_CALENDAR_MONTHVIEW_DAYPOS::IsValid() {
  698. BOOL bValid = (nWeekIndex >= 0 || nWeekDayIndex >= 0);
  699. return bValid;
  700. }
  701. AFX_INLINE XTP_CALENDAR_MONTHVIEW_DAYPOS::operator int() {
  702. ASSERT(IsValid());
  703. return GetPOS();
  704. }
  705. AFX_INLINE const XTP_CALENDAR_MONTHVIEW_DAYPOS& XTP_CALENDAR_MONTHVIEW_DAYPOS::operator =(int nPOS) {
  706. SetPOS(nPOS);
  707. return *this;
  708. }
  709. AFX_INLINE XTP_CALENDAR_MONTHVIEW_DAYPOS& XTP_CALENDAR_MONTHVIEW_DAYPOS::operator ++() {
  710. ASSERT(IsValid());
  711. SetPOS(GetPOS() + 1);
  712. return *this;
  713. }
  714. AFX_INLINE XTP_CALENDAR_MONTHVIEW_DAYPOS XTP_CALENDAR_MONTHVIEW_DAYPOS::operator ++(int) {
  715. ASSERT(IsValid());
  716. XTP_CALENDAR_MONTHVIEW_DAYPOS retPOS = *this;
  717. SetPOS(GetPOS() + 1);
  718. return retPOS;
  719. }
  720. //===========================================================================
  721. AFX_INLINE int  CXTPCalendarMonthView::CMonthViewGrid::GetWeeksCount() const {
  722. return m_nWeeksCount;
  723. }
  724. AFX_INLINE COleDateTime CXTPCalendarMonthView::CMonthViewGrid::GetBeginDate() const {
  725. return m_dtBeginDate;
  726. }
  727. AFX_INLINE XTP_CALENDAR_MONTHVIEW_DAYPOS CXTPCalendarMonthView::CMonthViewGrid::GetMaxDayPOS() {
  728. XTP_CALENDAR_MONTHVIEW_DAYPOS maxPOS = (int)(GetWeeksCount() * 7 - 1);
  729. return maxPOS;
  730. }
  731. AFX_INLINE CXTPCalendarMonthView::CMonthViewGrid* CXTPCalendarMonthView::GetGrid() {
  732. return m_pGrid;
  733. }
  734. AFX_INLINE int CXTPCalendarMonthView::CMonthViewGrid::GetFirstDayOfWeek() const {
  735. return m_nFirstDayOfWeekIndex;
  736. }
  737. ////////////////////////////////////////////////////////////////////////////
  738. AFX_INLINE int CXTPCalendarMonthView::GetEventCaptionFormat() const {
  739. return m_nEventCaptionFormat;
  740. }
  741. AFX_INLINE int CXTPCalendarMonthView::GetEventTimeWidth() const {
  742. return m_nEventTimeWidth;
  743. }
  744. #endif // !defined(_XTPCALENDARMONTHVIEW_H__)