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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarCaptionBarControl.h: interfaces for Time Zone Helper classes.
  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(__XTPCalendarCaptionBarControl_H__)
  22. #define __XTPCalendarCaptionBarControl_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "Common/XTPWinThemeWrapper.h"
  28. //#include "XTPCalendarTheme.h"
  29. #include "XTPCalendarView.h"
  30. #include "XTPCalendarViewPart.h"
  31. class CXTPCalendarCaptionBarTheme;
  32. //////////////////////////////////////////////////////////////////////////
  33. // Office2007
  34. /*
  35. Switch View Bar:
  36. SwitchViewButtonPart
  37. RadioButtonPart
  38. // LabelPart
  39. Scroll Date Bar:
  40. ScrollDateButtonPart
  41. DateLabelPart
  42. ==========================================
  43. ButtonViewDay   : SwitchViewButtonPart
  44. ButtonViewWeek  : SwitchViewButtonPart
  45. ButtonViewMonth : SwitchViewButtonPart
  46. ShowWorkWeek    : RadioButtonPart
  47. ShowFullWeek    : RadioButtonPart
  48. ---------------------------------
  49. ScrollPrevDate  : ScrollDateButtonPart
  50. ScrollNextDate  : ScrollDateButtonPart
  51. DateLabel       : DateLabelPart
  52. ---------------------------------
  53. SwitchViewBarBkColor
  54. ScrollDateBarBkColor
  55. */
  56. //===========================================================================
  57. // Summary:
  58. //     Enumerates Calendar Caption Bar graphical objects .
  59. //===========================================================================
  60. enum XTPEnumCalendarCaptionBarThemeObject
  61. {
  62. xtpCalendarCaptionBar_Unknown           = 0, // Defines Unknown (NULL) value.
  63. xtpCalendarCaptionBar_ButtonViewDay     = 0x00000001, // Defines SwitchViewBar DayViewButton.
  64. xtpCalendarCaptionBar_ButtonViewWeek    = 0x00000002, // Defines SwitchViewBar WeekViewButton.
  65. xtpCalendarCaptionBar_ButtonViewMonth   = 0x00000004, // Defines SwitchViewBar MonthViewButton.
  66. xtpCalendarCaptionBar_ShowWorkWeek      = 0x00000010, // Defines SwitchViewBar ShowWorkWeek radio button.
  67. xtpCalendarCaptionBar_ShowFullWeek      = 0x00000020, // Defines SwitchViewBar ShowFullWeek radio button.
  68. xtpCalendarCaptionBar_ScrollPrevDate    = 0x00000100, // Defines ScrollDateBar PrevDateButton.
  69. xtpCalendarCaptionBar_ScrollNextDate    = 0x00000200, // Defines ScrollDateBar NextDateButton.
  70. xtpCalendarCaptionBar_DateLabel         = 0x00000400 // Defines ScrollDateBar DateLabel.
  71. };
  72. //===========================================================================
  73. // Summary:
  74. //     CXTPCalendarCaptionBarControl represents CalendarCaptionBar control and
  75. //    used as a part of CXTPCalendarControl object. They looks and works as 
  76. //    a single control but separated on 2 objects for customization 
  77. //    possibilities.
  78. // Remarks:
  79. //    This class is used as owner (host, events source) window for 
  80. //    CXTPCalendarCaptionBarTheme object which implements the most control logic.
  81. //
  82. // See Also: CXTPCalendarCaptionBarTheme, CXTPCalendarControl
  83. //===========================================================================
  84. class _XTP_EXT_CLASS CXTPCalendarCaptionBarControl : public CWnd
  85. {
  86. //{{AFX_CODEJOCK_PRIVATE
  87. DECLARE_DYNAMIC(CXTPCalendarCaptionBarControl)
  88. //}}AFX_CODEJOCK_PRIVATE
  89. public:
  90. //-----------------------------------------------------------------------
  91. // Summary:
  92. //     Default object constructor.
  93. // See Also: 
  94. //    ~CXTPCalendarCaptionBarControl
  95. //-----------------------------------------------------------------------
  96. CXTPCalendarCaptionBarControl();
  97. //-----------------------------------------------------------------------
  98. // Summary:
  99. //     Default object destructor.
  100. // See Also: 
  101. //    CXTPCalendarCaptionBarControl
  102. //-----------------------------------------------------------------------
  103. virtual ~CXTPCalendarCaptionBarControl();
  104. //-----------------------------------------------------------------------
  105. // Summary:
  106. //     This member function retrieves the minimum size required to show a
  107. //     CaptionBar control.
  108. // Parameters:
  109. //     pDC - Pointer to a valid device context (may be NULL).
  110. // Remarks:
  111. //     This member function call CXTPCalendarCaptionBarTheme::CalcMinRect
  112. //    function.
  113. // Returns:
  114. //     A minimum rectangle required to show CaptionBar control.
  115. // See Also:
  116. //     CXTPCalendarCaptionBarTheme::CalcMinRect
  117. // --------------------------------------------------------------------------
  118. virtual CRect CalcMinRect(CDC* pDC = NULL);
  119. // -----------------------------------------------------------------------
  120. // Summary:
  121. //     This member function is used to create the CaptionBar control window.
  122. // Parameters:
  123. //     dwStyle :     Specifies the window style attributes.
  124. //     rect :        A RECT object that contains the coordinates of the
  125. //                   window, in the client coordinates of pParentWnd.
  126. //     pParentWnd :  A CWnd pointer to the parent window.
  127. //     nID :         A UINT that contains the ID of the child window.
  128. // Returns:
  129. //     Nonzero if successful. Otherwise 0.
  130. // -----------------------------------------------------------------------
  131. virtual BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  132. //-----------------------------------------------------------------------
  133. // Summary:
  134. //     This member function is used to adjust the object's layout depending
  135. //     on the provided bounding rectangle.
  136. // Parameters:
  137. //     pDC - Pointer to a valid device context (may be NULL).
  138. //     rcRect   - A CRect object containing the dimensions of the bounding
  139. //               rectangle for this part.
  140. //-----------------------------------------------------------------------
  141. virtual void AdjustLayout(CDC* pDC = NULL, const CRect* prcWnd = NULL);
  142. //-----------------------------------------------------------------------
  143. // Summary:
  144. //     This member function is used to obtain pointer to
  145. //    CXTPCalendarCaptionBarTheme object.
  146. // Returns:
  147. //     A pointer to CXTPCalendarCaptionBarTheme object.
  148. //-----------------------------------------------------------------------
  149. CXTPCalendarCaptionBarTheme* GetTheme();
  150. //-----------------------------------------------------------------------
  151. // Summary:
  152. //     This member function is used to set theme object.
  153. // Parameters:
  154. //     pTheme - A pointer to CXTPCalendarCaptionBarTheme object.
  155. //-----------------------------------------------------------------------
  156. void SetTheme(CXTPCalendarCaptionBarTheme* pTheme);
  157. //-----------------------------------------------------------------------
  158. // Summary:
  159. //     Register the window class if it has not already been registered.
  160. // Parameters:
  161. //     hInstance - Instance of resource where control is located
  162. // Returns:
  163. //     TRUE if the window class was successfully registered.  FALSE otherwise.
  164. //-----------------------------------------------------------------------
  165. BOOL RegisterWindowClass(HINSTANCE hInstance = NULL);
  166. protected:
  167. CXTPCalendarCaptionBarTheme* m_pTheme; // Store pointer to CXTPCalendarCaptionBarTheme object.
  168. protected:
  169. //{{AFX_CODEJOCK_PRIVATE
  170. afx_msg void OnPaint();
  171. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  172. afx_msg void OnSize(UINT nType, int cx, int cy);
  173. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  174. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  175. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  176. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  177. afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
  178. afx_msg void OnTimer(UINT_PTR uTimerID);
  179. afx_msg void OnDestroy();
  180. //  afx_msg void OnEnable(BOOL bEnable);
  181. //  afx_msg UINT OnGetDlgCode();
  182. //  afx_msg void OnSetFocus(CWnd* pOldWnd);
  183. afx_msg void OnKillFocus (CWnd* pNewWnd);
  184. DECLARE_MESSAGE_MAP()
  185. //}}AFX_CODEJOCK_PRIVATE
  186. };
  187. //===========================================================================
  188. // Summary:
  189. //     This class used as a base class for graphical Parts of CalendarCaptionBar 
  190. //    paint theme.
  191. // See Also: CXTPCalendarCaptionBarTheme
  192. //===========================================================================
  193. class _XTP_EXT_CLASS CXTPCalendarCaptionBarThemePart : public CXTPCalendarWMHandler
  194. {
  195. //{{AFX_CODEJOCK_PRIVATE
  196. friend class CXTPCalendarCaptionBarTheme;
  197. DECLARE_DYNAMIC(CXTPCalendarCaptionBarThemePart)
  198. //}}AFX_CODEJOCK_PRIVATE
  199. public:
  200. //-----------------------------------------------------------------------
  201. // Summary:
  202. //     Default object constructor.
  203. // Parameters:
  204. //     pTheme - Pointer to parent CXTPCalendarCaptionBarTheme object.
  205. //     nPartID - An object identifier (value from enum XTPEnumCalendarCaptionBarThemeObject).
  206. // See Also: 
  207. //    ~CXTPCalendarCaptionBarThemePart
  208. //-----------------------------------------------------------------------
  209. CXTPCalendarCaptionBarThemePart(CXTPCalendarCaptionBarTheme* pTheme, int nPartID);
  210. //-----------------------------------------------------------------------
  211. // Summary:
  212. //     Default object destructor.
  213. // See Also: 
  214. //    CXTPCalendarCaptionBarThemePart
  215. //-----------------------------------------------------------------------
  216. virtual ~CXTPCalendarCaptionBarThemePart();
  217. //-----------------------------------------------------------------------
  218. // Summary:
  219. //     This member function is used to adjust the object's layout depending
  220. //     on the provided bounding rectangle.
  221. // Parameters:
  222. //     pDC - Pointer to a valid device context (may be NULL).
  223. //     rcRect   - A CRect object containing the dimensions of the bounding
  224. //               rectangle for this part.
  225. //-----------------------------------------------------------------------
  226. virtual void AdjustLayout(CDC* pDC, const CRect& rcRect);
  227. //-----------------------------------------------------------------------
  228. // Summary:
  229. //     This member function is used to draw the part content utilizing
  230. //     the specified device context.
  231. // Parameters:
  232. //     pDC - Pointer to a valid device context.
  233. //-----------------------------------------------------------------------
  234. virtual void Draw(CDC* pDC);
  235. //-------------------------------------------------------------------
  236. // Summary:
  237. //     Performs refreshing of graphical related parameters from
  238. //     system settings. Base implementation do nothing.
  239. //-------------------------------------------------------------------
  240. virtual void RefreshMetrics() {};
  241. //-----------------------------------------------------------------------
  242. // Summary:
  243. //     This member function initiates the CalendarCaptionBar control's redrawing.
  244. // Parameters:
  245. //     bUpdateNow : Set this parameter to TRUE if you'd like to force
  246. // control's redrawing.
  247. // Remarks:
  248. //     Call this member function if you want to request or force the control's
  249. //     redrawing.
  250. // See Also: 
  251. //    CXTPCalendarCaptionBarTheme::Redraw, AdjustLayout
  252. //-----------------------------------------------------------------------
  253. virtual void Redraw(BOOL bUpdateNow = FALSE);
  254. //-----------------------------------------------------------------------
  255. // Summary:
  256. //     This member function is used to determine is the specified point 
  257. //    over visible object rectangle.
  258. // Parameters:
  259. //     pt - A CPoint object reference that contains the point to test.
  260. //-----------------------------------------------------------------------
  261. virtual BOOL HitTest(const CPoint& pt);
  262. //-----------------------------------------------------------------------
  263. // Summary:
  264. //     This member function is used to obtain pointer to parent 
  265. //    CXTPCalendarCaptionBarTheme object.
  266. // Returns:
  267. //     A pointer to CXTPCalendarCaptionBarTheme object.
  268. //-----------------------------------------------------------------------
  269. virtual CXTPCalendarCaptionBarTheme* GetTheme();
  270. //-----------------------------------------------------------------------
  271. // Summary:
  272. //     This member function is used to obtain current paint theme.
  273. // Returns:
  274. //     A paint theme ID from enum XTPCalendarTheme.
  275. //-----------------------------------------------------------------------
  276. virtual XTPCalendarTheme GetPaintTheme() const;
  277. //-----------------------------------------------------------------------
  278. // Summary:
  279. //     This member function is used to obtain an object identifier.
  280. // Returns:
  281. //     An object ID (value from enum XTPEnumCalendarCaptionBarThemeObject).
  282. //-----------------------------------------------------------------------
  283. virtual int GetPartID();
  284. //-----------------------------------------------------------------------
  285. // Summary:
  286. //     This member function is used to obtain an object rectangle.
  287. // Returns:
  288. //     An object rectangle.
  289. //-----------------------------------------------------------------------
  290. virtual CRect GetRect();
  291. //-----------------------------------------------------------------------
  292. // Summary:
  293. //     This member function is used to obtain an object text.
  294. // Returns:
  295. //     An object text as CString.
  296. // See Also: SetText
  297. //-----------------------------------------------------------------------
  298. virtual CString GetText();
  299. //-----------------------------------------------------------------------
  300. // Summary:
  301. //     This member function is used to set object text.
  302. // Parameters:
  303. //     pcszText - An object text to set.
  304. // See Also: GetText
  305. //-----------------------------------------------------------------------
  306. virtual void SetText(LPCTSTR pcszText);
  307. //-----------------------------------------------------------------------
  308. // Summary:
  309. //     This member function is used to get is part object visible.
  310. // Returns:
  311. //     TRUE if object is visible, FALSE otherwise.
  312. // See Also: SetVisible
  313. //-----------------------------------------------------------------------
  314. virtual BOOL IsVisible();
  315. //-----------------------------------------------------------------------
  316. // Summary:
  317. //     This member function is used to set visible object's state.
  318. // Parameters:
  319. //     bVisible - A BOOL value to define visible state.
  320. // See Also: GetVisible
  321. //-----------------------------------------------------------------------
  322. virtual void SetVisible(BOOL bVisible);
  323. //-----------------------------------------------------------------------
  324. // Summary:
  325. //     This member function is used to get checked state.
  326. // Returns:
  327. //     Non-zero if object is checked, 0 (zero) otherwise.
  328. // See Also: SetCheck
  329. //-----------------------------------------------------------------------
  330. virtual int GetCheck();
  331. //-----------------------------------------------------------------------
  332. // Summary:
  333. //     This member function is used to set checked state.
  334. // Parameters:
  335. //     nCheck - Set as Non-zero if object is checked, 0 (zero) otherwise.
  336. // See Also: GetCheck
  337. //-----------------------------------------------------------------------
  338. virtual void SetCheck(int nCheck);
  339. //-----------------------------------------------------------------------
  340. // Summary:
  341. //     This member function is used to get object state (flags from 
  342. //    CXTPCalendarCaptionBarThemePart::EStates enum).
  343. // Returns:
  344. //     Current object state flags.
  345. // See Also: SetState
  346. //-----------------------------------------------------------------------
  347. virtual int GetState();
  348. //-----------------------------------------------------------------------
  349. // Summary:
  350. //     This member function is used to set object state as set of flags 
  351. //    from CXTPCalendarCaptionBarThemePart::EStates enum.
  352. // Parameters:
  353. //     nState - Current object state flags.
  354. // See Also: SetState
  355. //-----------------------------------------------------------------------
  356. virtual void SetState(int nState);
  357. //-----------------------------------------------------------------------
  358. // Summary:
  359. //     This member function is used to get object text color.
  360. // Returns:
  361. //     m_clrTextColor value returned if it is defined, otherwise 
  362. //    GetTheme()->m_clrTextColor value returned.
  363. // See Also: 
  364. //    CXTPCalendarCaptionBarThemePart::m_clrTextColor,
  365. //    CXTPCalendarCaptionBarTheme::m_clrTextColor
  366. //-----------------------------------------------------------------------
  367. virtual COLORREF GetTextColor();
  368. public:
  369. //-----------------------------------------------------------------------
  370. // Summary:
  371. //     Defines the part object states flags.
  372. //-----------------------------------------------------------------------
  373. enum EStates
  374. {
  375. xtpBtnStateNormal       = 0, // defines a normal state.
  376. xtpBtnStateMouseOver    = 0x001, // defines a mouse over state.
  377. xtpBtnStatePressed      = 0x002, // defines a pressed state.
  378. xtpBtnStateChecked      = 0x004, // defines a checked state.
  379. xtpBtnStateFocused      = 0x008, // defines a ficused state.
  380. };
  381. //-----------------------------------------------------------------------
  382. // Summary:
  383. //     This member function is used to processes mouse movement events.
  384. // Parameters:
  385. //     nFlags  - A UINT that is used to indicate whether various virtual
  386. //               keys are down.
  387. //     point   - A CPoint that specifies the x- and y- coordinates of the cursor.
  388. //               These coordinates are always relative to the
  389. //               upper-left corner of the window.
  390. // Remarks:
  391. //     This method is called by the parent object when the user
  392. //     moves the mouse cursor.
  393. //-----------------------------------------------------------------------
  394. virtual void OnMouseMove(UINT nFlags, CPoint point);
  395. //-----------------------------------------------------------------------
  396. // Summary:
  397. //     This member function is used to process left mouse button down events.
  398. // Parameters:
  399. //     nFlags  - An int that indicates whether various virtual keys are down.
  400. //     point   - A CPoint object that specifies the x- and y- coordinates of the cursor.
  401. //               These coordinates are always relative to the
  402. //               upper-left corner of the window.
  403. // Remarks:
  404. //     This method is called by the parent object when the user
  405. //     presses the left mouse button.
  406. //-----------------------------------------------------------------------
  407. virtual BOOL OnLButtonDown(UINT nFlags, CPoint point);
  408. //-----------------------------------------------------------------------
  409. // Summary:
  410. //     This member function is used to process left mouse button up events.
  411. // Parameters:
  412. //     nFlags  - An int that indicates whether various virtual keys are down.
  413. //     point   - A CPoint object that specifies the x- and y- coordinates of the cursor.
  414. //               These coordinates are always relative to the
  415. //               upper-left corner of the window.
  416. // Remarks:
  417. //     This method is called by the parent object when the user
  418. //     releases the left mouse button.
  419. //-----------------------------------------------------------------------
  420. virtual BOOL OnLButtonUp(UINT nFlags, CPoint point);
  421. public:
  422. CXTPPaintManagerColor   m_clrTextColor; // Store the object's text color.
  423. protected:
  424. CXTPCalendarCaptionBarTheme* m_pTheme; // Store pointer to a parent theme object.
  425. int m_nPartID; // Store a Part ID.
  426. CRect   m_rcRect; // Store a Part rectangle.
  427. CString m_strText; // Store a Part text.
  428. int     m_nState; // Store a Part state.
  429. BOOL    m_bVisible; // Store a Part visible state.
  430. };
  431. //===========================================================================
  432. // Summary:
  433. //     This class CalendarCaptionBar control drawing, user interaction logic 
  434. //    and interaction logic with attached Calendar control.
  435. //    paint theme.
  436. // See Also: CXTPCalendarCaptionBarTheme
  437. //===========================================================================
  438. class _XTP_EXT_CLASS CXTPCalendarCaptionBarTheme : public CXTPCalendarWMHandler
  439. {
  440. //{{AFX_CODEJOCK_PRIVATE
  441. DECLARE_DYNCREATE(CXTPCalendarCaptionBarTheme)
  442. friend class CXTPCalendarCaptionBarControl;
  443. friend class CXTPCalendarCaptionBarThemePart;
  444. //}}AFX_CODEJOCK_PRIVATE
  445. public:
  446. //-----------------------------------------------------------------------
  447. // Summary:
  448. //     Default object constructor.
  449. // See Also:
  450. //    ~CXTPCalendarCaptionBarTheme
  451. //-----------------------------------------------------------------------
  452. CXTPCalendarCaptionBarTheme();
  453. //-----------------------------------------------------------------------
  454. // Summary:
  455. //     Default object destructor.
  456. // See Also:
  457. //    CXTPCalendarCaptionBarTheme
  458. //-----------------------------------------------------------------------
  459. virtual ~CXTPCalendarCaptionBarTheme();
  460. public:
  461. //-----------------------------------------------------------------------
  462. // Summary:
  463. //    This class implements SwitchView button part of the SwitchViewBar.
  464. // See Also:
  465. //    CXTPCalendarCaptionBarThemePart
  466. //-----------------------------------------------------------------------
  467. class _XTP_EXT_CLASS CSwitchViewButtonPart: public CXTPCalendarCaptionBarThemePart
  468. {
  469. public:
  470. //{{AFX_CODEJOCK_PRIVATE
  471. CSwitchViewButtonPart(CXTPCalendarCaptionBarTheme* pTheme, int nPartID) :
  472. CXTPCalendarCaptionBarThemePart (pTheme, nPartID) {};
  473. virtual void RefreshMetrics();
  474. virtual void AdjustLayout(CDC* pDC, const CRect& rcRect);
  475. virtual void Draw(CDC* pDC);
  476. //}}AFX_CODEJOCK_PRIVATE
  477. };
  478. //-----------------------------------------------------------------------
  479. // Summary:
  480. //    This class implements Radio button part of the SwitchViewBar.
  481. // See Also:
  482. //    CXTPCalendarCaptionBarThemePart
  483. //-----------------------------------------------------------------------
  484. class _XTP_EXT_CLASS CRadioButtonPart : public CXTPCalendarCaptionBarThemePart
  485. {
  486. public:
  487. //{{AFX_CODEJOCK_PRIVATE
  488. CRadioButtonPart(CXTPCalendarCaptionBarTheme* pTheme, int nPartID) :
  489. CXTPCalendarCaptionBarThemePart (pTheme, nPartID) {};
  490. virtual void AdjustLayout(CDC* pDC, const CRect& rcRect);
  491. virtual void RefreshMetrics();
  492. virtual void Draw(CDC* pDC);
  493. //}}AFX_CODEJOCK_PRIVATE
  494. };
  495. //-----------------------------------------------------------------------
  496. // Summary:
  497. //    This class implements Scroll Date button part of the ScrollDateBar.
  498. // See Also:
  499. //    CXTPCalendarCaptionBarThemePart
  500. //-----------------------------------------------------------------------
  501. class _XTP_EXT_CLASS CScrollDateButtonPart : public CXTPCalendarCaptionBarThemePart
  502. {
  503. public:
  504. //{{AFX_CODEJOCK_PRIVATE
  505. CScrollDateButtonPart(CXTPCalendarCaptionBarTheme* pTheme, int nPartID) :
  506. CXTPCalendarCaptionBarThemePart (pTheme, nPartID) {};
  507. virtual void Draw(CDC* pDC);
  508. virtual void AdjustLayout(CDC* pDC, const CRect& rcRect);
  509. virtual BOOL OnLButtonDown(UINT nFlags, CPoint point);
  510. virtual void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  511. virtual void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
  512. //}}AFX_CODEJOCK_PRIVATE
  513. protected:
  514. //{{AFX_CODEJOCK_PRIVATE
  515. virtual LPCTSTR _GetImageName();
  516. virtual void _DrawTriangle(CDC* pDC, CPoint pt0, CPoint pt1, CPoint pt2, COLORREF clrColor);
  517. virtual void DrawScrollTriangle(CDC* pDC, CRect rcRect, BOOL bLeftDirection, COLORREF clrColor);
  518. //}}AFX_CODEJOCK_PRIVATE
  519. };
  520. //-----------------------------------------------------------------------
  521. // Summary:
  522. //    This class implements Date Label part of the ScrollDateBar.
  523. // See Also:
  524. //    CXTPCalendarCaptionBarThemePart
  525. //-----------------------------------------------------------------------
  526. class _XTP_EXT_CLASS CDateLabelPart : public CXTPCalendarCaptionBarThemePart
  527. {
  528. public:
  529. //{{AFX_CODEJOCK_PRIVATE
  530. CDateLabelPart(CXTPCalendarCaptionBarTheme* pTheme, int nPartID) :
  531. CXTPCalendarCaptionBarThemePart (pTheme, nPartID) {};
  532. virtual void RefreshMetrics();
  533. virtual void Draw(CDC* pDC);
  534. virtual CString _FormatDate(COleDateTime dtDay1, COleDateTime dtDay2, BOOL bShowMonthDay);
  535. LPCTSTR _AddSpace(CString& rStr);
  536. //}}AFX_CODEJOCK_PRIVATE
  537. public:
  538. CXTPCalendarThemeFontValue  m_fntTextFont; // Store the text font.
  539. };
  540. public:
  541. //-----------------------------------------------------------------------
  542. // Summary:
  543. //     This member function retrieves the minimum size required to show a
  544. //     CaptionBar control.
  545. // Parameters:
  546. //     pDC - Pointer to a valid device context (may be NULL).
  547. // Returns:
  548. //     A minimum rectangle required to show CaptionBar control.
  549. // See Also:
  550. //     CXTPCalendarCaptionBarControl::CalcMinRect
  551. // --------------------------------------------------------------------------
  552. virtual CRect CalcMinRect(CDC* pDC = NULL);
  553. //-----------------------------------------------------------------------
  554. // Summary:
  555. //     This member function is used to adjust the object's layout depending
  556. //     on the provided bounding rectangle.
  557. // Parameters:
  558. //     pDC - Pointer to a valid device context (may be NULL).
  559. //     rcRect   - A CRect object containing the dimensions of the bounding
  560. //               rectangle for this part.
  561. //-----------------------------------------------------------------------
  562. virtual void AdjustLayout(CDC* pDC, const CRect& rcRect);
  563. //-------------------------------------------------------------------
  564. // Summary:
  565. //     Performs refreshing of graphical related parameters from
  566. //     system settings. Base implementation do nothing.
  567. //-------------------------------------------------------------------
  568. virtual void RefreshMetrics();
  569. //-----------------------------------------------------------------------
  570. // Summary:
  571. //     This member function initiates the CalendarCaptionBar control's redrawing.
  572. // Parameters:
  573. //     bUpdateNow : Set this parameter to TRUE if you'd like to force
  574. // control's redrawing.
  575. // Remarks:
  576. //     Call this member function if you want to request or force the control's
  577. //     redrawing.
  578. // See Also: 
  579. //    CXTPCalendarCaptionBarTheme::Redraw, AdjustLayout
  580. //-----------------------------------------------------------------------
  581. virtual void Redraw(BOOL bUpdateNow = FALSE);
  582. //-----------------------------------------------------------------------
  583. // Summary:
  584. //     This member functions is used to get is CaptionBar object visible.
  585. // Returns:
  586. //     TRUE if corresponding object is visible, FALSE otherwise.
  587. // See Also: 
  588. //    SetSwitchViewButtons, SetScrollDateButtons, SetDateLabel
  589. //-----------------------------------------------------------------------
  590. virtual BOOL IsSwitchViewButtons();
  591. virtual BOOL IsScrollDateButtons(); // <COMBINE IsSwitchViewButtons>
  592. virtual BOOL IsDateLabel(); // <COMBINE IsSwitchViewButtons>
  593. //-----------------------------------------------------------------------
  594. // Summary:
  595. //     This member function is used to set visible CaptionBar object's state.
  596. // Parameters:
  597. //     bVisible - A BOOL value to define visible state.
  598. // See Also: GetVisible
  599. //-----------------------------------------------------------------------
  600. virtual void SetSwitchViewButtons(BOOL bVisible);
  601. virtual void SetScrollDateButtons(BOOL bVisible); // <COMBINE SetSwitchViewButtons>
  602. virtual void SetDateLabel(BOOL bVisible); // <COMBINE SetSwitchViewButtons>
  603. //-----------------------------------------------------------------------
  604. // Summary:
  605. //     This member function is used to obtain current paint theme.
  606. // Returns:
  607. //     A paint theme ID from enum XTPCalendarTheme.
  608. //-----------------------------------------------------------------------
  609. virtual XTPCalendarTheme GetPaintTheme() const;
  610. //-----------------------------------------------------------------------
  611. // Summary:
  612. //     This member function is used to set current paint theme.
  613. // Parameters:
  614. //     ePaintTheme - A paint theme ID from enum XTPCalendarTheme.
  615. //-----------------------------------------------------------------------
  616. virtual void SetPaintTheme(XTPCalendarTheme nTheme);
  617. public:
  618. //-----------------------------------------------------------------------
  619. // Summary:
  620. //     This member function is used to draw the object content utilizing
  621. //     the specified device context.
  622. // Parameters:
  623. //     pDC - Pointer to a valid device context.
  624. //-----------------------------------------------------------------------
  625. virtual void Draw(CDC* pDC);
  626. //-----------------------------------------------------------------------
  627. // Summary:
  628. //     This member function is used to obtain an object rectangle.
  629. // Returns:
  630. //     An object rectangle.
  631. //-----------------------------------------------------------------------
  632. virtual const CRect& GetRect();
  633. //-----------------------------------------------------------------------
  634. // Summary:
  635. //     This member function is used to obtain an owner (parent, host) window.
  636. // Returns:
  637. //     A pointer to CWnd object.
  638. //-----------------------------------------------------------------------
  639. virtual CWnd* GetOwnerWnd();
  640. //-----------------------------------------------------------------------
  641. // Summary:
  642. //     This member function is used to set owner (parent, host) window.
  643. // Remarks:
  644. //    CXTPCalendarCaptionBarControl::SetTheme call this method.
  645. // Parameters:
  646. //     pCaptionBar - A pointer to CXTPCalendarCaptionBarControl window.
  647. //-----------------------------------------------------------------------
  648. virtual void SetOwner(CXTPCalendarCaptionBarControl* pCaptionBar);
  649. //-----------------------------------------------------------------------
  650. // Summary:
  651. //     This member function is used to attach to CalendarControl to interact 
  652. //    as a single control.
  653. // Parameters:
  654. //     pCalendar - A pointer to CXTPCalendarControl object or set as NULL 
  655. //    to detach from calendar.
  656. // See Also: GetCalendarCtrl
  657. //-----------------------------------------------------------------------
  658. virtual void AttachCalendar(CXTPCalendarControl* pCalendar);
  659. //-----------------------------------------------------------------------
  660. // Summary:
  661. //     This member function is used to obtain attached calendar control.
  662. // Returns:
  663. //     A pointer to CXTPCalendarControl object.
  664. //-----------------------------------------------------------------------
  665. virtual CXTPCalendarControl* GetCalendarCtrl();
  666. //-----------------------------------------------------------------------
  667. // Summary:
  668. //     This member function is called to update CaptionBar controls states
  669. //    correspondingly to attached calendar control.
  670. //-----------------------------------------------------------------------
  671. virtual void UpdateControlsState();
  672. //-----------------------------------------------------------------------
  673. // Summary:
  674. //     This member function is used to read color by name from resources.
  675. // Returns:
  676. //     A RGB color value.
  677. //-----------------------------------------------------------------------
  678. virtual COLORREF GetColor2(LPCTSTR pcszColorName, COLORREF clrDefault);
  679. //-----------------------------------------------------------------------
  680. // Summary:
  681. //     This member function is called when user click on the caption bar 
  682. //    element (part).
  683. // Parameters:
  684. //     nPartID - An identifier of clicked part object.
  685. //-----------------------------------------------------------------------
  686. virtual void OnPartClick(int nPartID);
  687. protected:
  688. //{{AFX_CODEJOCK_PRIVATE
  689. virtual int GetChildHandlersCount();
  690. virtual CXTPCalendarWMHandler* GetChildHandlerAt(int nIndex);
  691. virtual void OnBeforeDestroy();
  692. virtual void OnMouseMove(UINT nFlags, CPoint point);
  693. virtual BOOL OnTimer(UINT_PTR uTimerID);
  694. virtual void OnKillFocus (CWnd* pNewWnd);
  695. virtual BOOL _UpdateControlsHotState(BOOL* pbMouseLeave = NULL);
  696. //}}AFX_CODEJOCK_PRIVATE
  697. protected:
  698. CXTPCalendarCaptionBarControl* m_pCaptionBar; // Store pointer owner CaptionBar control.
  699. CXTPCalendarControl* m_pCalendar; // Store pointer attached calendar control.
  700. CRect m_rcRect; // Store object rect.
  701. UINT_PTR m_nCheckHotStateTimerID; // Store timer ID to refresh controls hot state.
  702. XTPCalendarTheme m_nPaintTheme; // Store current paint theme.
  703. protected:
  704. CSwitchViewButtonPart*  m_pButtonViewDay; // Store Swich to DayView button part object.
  705. CSwitchViewButtonPart*  m_pButtonViewWeek; // Store Swich to WeekView button part object.
  706. CSwitchViewButtonPart*  m_pButtonViewMonth; // Store Swich to MonthView button part object.
  707. CRadioButtonPart* m_pShowWorkWeek; // Store Show Work Week radio button part object.
  708. CRadioButtonPart* m_pShowFullWeek; // Store Show Full Week radio button part object.
  709. //---------------------------------
  710. CScrollDateButtonPart*  m_pScrollPrevDate; // Store Scroll Date Prev button part object.
  711. CScrollDateButtonPart*  m_pScrollNextDate; // Store Scroll Date Next button part object.
  712. CDateLabelPart*         m_pDateLabel; // Store Date Label part object.
  713. //---------------------------------
  714. BOOL m_bIsSwitchViewButtons; // Store option is SwitchViewBar visible. 
  715. BOOL m_bIsScrollDateButtons; // Store option is ScrollDate buttons visible.
  716. BOOL m_bIsDateLabel; // Store option is date Label visible.
  717. public:
  718. CXTPPaintManagerColor   m_clrSwitchViewBarBk; // Store SwitchViewBar background color.
  719. CXTPPaintManagerColor   m_clrScrollDateBarBk; // Store ScrollDateBar background color.
  720. CXTPPaintManagerColor   m_clrBorders; // Store ScrollDateBar background color.
  721. CXTPCalendarThemeFontValue  m_fntTextFont; // Store the text font.
  722. CXTPPaintManagerColor       m_clrTextColor; // Store the text color.
  723. public:
  724. //{{AFX_CODEJOCK_PRIVATE
  725. typedef CXTPCalendarPtrCollectionT<CXTPCalendarCaptionBarThemePart> CThemePartsArray;
  726. CThemePartsArray            m_arMembers;
  727. CXTPWinThemeWrapper     m_themeButton;
  728. //}}AFX_CODEJOCK_PRIVATE
  729. protected:
  730. //{{AFX_CODEJOCK_PRIVATE
  731. DECLARE_XTP_SINK(CXTPCalendarCaptionBarTheme, m_Sink)
  732. virtual void OnEvent_Calendar(XTP_NOTIFY_CODE Event, WPARAM wParam, LPARAM lParam);
  733. virtual void OnEvent_Office2007ImagesChanged(XTP_NOTIFY_CODE Event, WPARAM wParam, LPARAM lParam);
  734. //}}AFX_CODEJOCK_PRIVATE
  735. };
  736. /////////////////////////////////////////////////////////////////////////////
  737. AFX_INLINE CRect CXTPCalendarCaptionBarControl::CalcMinRect(CDC* pDC) {
  738. return m_pTheme ? m_pTheme->CalcMinRect(pDC) : CRect(0, 0, 0, 0);
  739. }
  740. AFX_INLINE CXTPCalendarControl* CXTPCalendarCaptionBarTheme::GetCalendarCtrl() {
  741. return m_pCalendar;
  742. }
  743. AFX_INLINE CXTPCalendarCaptionBarTheme* CXTPCalendarCaptionBarControl::GetTheme() {
  744. return m_pTheme;
  745. }
  746. AFX_INLINE const CRect& CXTPCalendarCaptionBarTheme::GetRect() {
  747. return m_rcRect;
  748. }
  749. AFX_INLINE CWnd* CXTPCalendarCaptionBarTheme::GetOwnerWnd() {
  750. return m_pCaptionBar;
  751. }
  752. AFX_INLINE BOOL CXTPCalendarCaptionBarTheme::IsSwitchViewButtons() {
  753. return m_bIsSwitchViewButtons;
  754. }
  755. AFX_INLINE BOOL CXTPCalendarCaptionBarTheme::IsScrollDateButtons() {
  756. return m_bIsScrollDateButtons;
  757. }
  758. AFX_INLINE BOOL CXTPCalendarCaptionBarTheme::IsDateLabel() {
  759. return m_bIsDateLabel;
  760. }
  761. AFX_INLINE void CXTPCalendarCaptionBarTheme::SetSwitchViewButtons(BOOL bVisible) {
  762. m_bIsSwitchViewButtons = bVisible;
  763. Redraw();
  764. }
  765. AFX_INLINE void CXTPCalendarCaptionBarTheme::SetScrollDateButtons(BOOL bVisible) {
  766. m_bIsScrollDateButtons = bVisible;
  767. Redraw();
  768. }
  769. AFX_INLINE void CXTPCalendarCaptionBarTheme::SetDateLabel(BOOL bVisible) {
  770. m_bIsDateLabel = bVisible;
  771. Redraw();
  772. }
  773. AFX_INLINE XTPCalendarTheme CXTPCalendarCaptionBarTheme::GetPaintTheme() const {
  774. return m_nPaintTheme;
  775. }
  776. AFX_INLINE void CXTPCalendarCaptionBarTheme::SetPaintTheme(XTPCalendarTheme nTheme) {
  777. m_nPaintTheme = nTheme;
  778. RefreshMetrics();
  779. Redraw();
  780. }
  781. AFX_INLINE CXTPCalendarCaptionBarTheme* CXTPCalendarCaptionBarThemePart::GetTheme() {
  782. return m_pTheme;
  783. }
  784. AFX_INLINE XTPCalendarTheme CXTPCalendarCaptionBarThemePart::GetPaintTheme() const {
  785. return m_pTheme ? m_pTheme->GetPaintTheme() : xtpCalendarThemeUnknown;
  786. }
  787. AFX_INLINE CRect CXTPCalendarCaptionBarThemePart::GetRect() {
  788. return m_rcRect;
  789. }
  790. AFX_INLINE CString CXTPCalendarCaptionBarThemePart::GetText() {
  791. return m_strText;
  792. }
  793. AFX_INLINE void CXTPCalendarCaptionBarThemePart::SetText(LPCTSTR pcszText) {
  794. m_strText = pcszText;
  795. }
  796. AFX_INLINE int CXTPCalendarCaptionBarThemePart::GetPartID() {
  797. return m_nPartID;
  798. }
  799. AFX_INLINE BOOL CXTPCalendarCaptionBarThemePart::IsVisible() {
  800. return m_bVisible;
  801. }
  802. AFX_INLINE void CXTPCalendarCaptionBarThemePart::SetVisible(BOOL bVisible) {
  803. m_bVisible = bVisible;
  804. }
  805. AFX_INLINE int CXTPCalendarCaptionBarThemePart::GetCheck() {
  806. return !!(m_nState & xtpBtnStateChecked);
  807. }
  808. AFX_INLINE void CXTPCalendarCaptionBarThemePart::SetCheck(int nCheck) {
  809. if (nCheck)
  810. m_nState = m_nState | xtpBtnStateChecked;
  811. else
  812. m_nState = m_nState & (~xtpBtnStateChecked);
  813. }
  814. AFX_INLINE int CXTPCalendarCaptionBarThemePart::GetState() {
  815. return m_nState;
  816. }
  817. AFX_INLINE void CXTPCalendarCaptionBarThemePart::SetState(int nState) {
  818. m_nState = nState;
  819. }
  820. #endif // !defined(__XTPCalendarCaptionBarControl_H__)