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

对话框与窗口

开发平台:

Visual C++

  1. // XTPTabToolBar.h : interface for the CXTPTabToolBar class.
  2. //
  3. // This file is a part of the XTREME COMMANDBARS 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(__XTPTABTOOLBAR_H__)
  22. #define __XTPTABTOOLBAR_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPToolBar.h"
  28. #include "TabManager/XTPTabManager.h"
  29. //===========================================================================
  30. // Summary:
  31. //     CXTPTabToolBar is a CXTPToolBar derived class. It represents tabbable toolbar
  32. //===========================================================================
  33. class _XTP_EXT_CLASS CXTPTabToolBar : public CXTPToolBar, public CXTPTabManager
  34. {
  35. private:
  36. DECLARE_XTP_COMMANDBAR(CXTPTabToolBar)
  37. public:
  38. //-----------------------------------------------------------------------
  39. // Summary:
  40. //     Constructs a CXTPTabToolBar object
  41. //-----------------------------------------------------------------------
  42. CXTPTabToolBar();
  43. //-----------------------------------------------------------------------
  44. // Summary:
  45. //     Destroys a CXTPTabToolBar object, handles cleanup and deallocation
  46. //-----------------------------------------------------------------------
  47. virtual ~CXTPTabToolBar();
  48. public:
  49. //-----------------------------------------------------------------------
  50. // Summary:
  51. //     Call this method to add new tab to CXTPTabToolBar
  52. // Parameters:
  53. //     nItem - Index to insert category to
  54. //     lpszItem - Caption of new tab
  55. //     pItems - Control items
  56. //     nCount - Control items count
  57. //     bLoadIcons - TRUE to load icons
  58. //     nIDResource - Toolbar resource identifier
  59. // Returns:
  60. //     CXTPTabManagerItem class of new tab
  61. //-----------------------------------------------------------------------
  62. CXTPTabManagerItem* InsertCategory(int nItem, LPCTSTR lpszItem, UINT* pItems, int nCount, BOOL bLoadIcons = TRUE);
  63. CXTPTabManagerItem* InsertCategory(int nItem, LPCTSTR lpszItem, UINT nIDResource, BOOL bLoadIcons = TRUE);// <combine CXTPTabToolBar::InsertCategory@int@LPCTSTR@UINT*@int@BOOL>
  64. //-----------------------------------------------------------------------
  65. // Summary:
  66. //     Call this method to refresh controls on selected tab
  67. // Parameters:
  68. //     pItem - Selected item
  69. //-----------------------------------------------------------------------
  70. void UpdateTabs(CXTPTabManagerItem* pItem = NULL);
  71. //-----------------------------------------------------------------------
  72. // Summary:
  73. //     Call this member to get a pointer to the tab paint manager.
  74. //     The tab paint manager is used to customize the appearance of
  75. //     CXTPTabManagerItem objects and the tab manager.  I.e. Tab colors,
  76. //     styles, etc...  This member must be overridden in
  77. //     derived classes.
  78. // Returns:
  79. //     Pointer to CXTPTabPaintManager that contains the visual elements
  80. //     of the tabs.
  81. //-----------------------------------------------------------------------
  82. virtual CXTPTabPaintManager* GetPaintManager() const;
  83. //-----------------------------------------------------------------------
  84. // Summary:
  85. //     Call this method to set minimum available width of toolbar
  86. // Parameters:
  87. //      nMinWidth - Minimum width of toolbar
  88. //-----------------------------------------------------------------------
  89. void SetMinimumWidth(int nMinWidth);
  90. protected:
  91. //-----------------------------------------------------------------------
  92. // Summary:
  93. //     This method is called to update position of TabManager.
  94. //-----------------------------------------------------------------------
  95. void Reposition();
  96. //-----------------------------------------------------------------------
  97. // Summary:
  98. //     This member is called when the icon of the tab needs to be
  99. //     drawn.
  100. // Parameters:
  101. //     pDC    - Pointer to the destination device context.
  102. //     pt     - Specifies the location of the image.
  103. //     pItem  - CXTPTabManagerItem object to draw icon on.
  104. //     bDraw  - TRUE if the icon needs to be drawn, I.e. the icon size
  105. //              changed.  FALSE if the icon does not need to be
  106. //              drawn or redrawn.
  107. //     szIcon - Size of the tab icon.
  108. // Remarks:
  109. //     For example, on mouse-over.  This member is overridden by its
  110. //     descendants.  This member must be overridden in
  111. //     derived classes.
  112. // Returns:
  113. //     TRUE if the icon was successfully drawn, FALSE if the icon
  114. //     was not drawn.
  115. //-----------------------------------------------------------------------
  116. BOOL DrawIcon(CDC* pDC, CPoint pt, CXTPTabManagerItem* pItem, BOOL bDraw, CSize& szIcon) const;
  117. //-------------------------------------------------------------------------
  118. // Summary:
  119. //     This member is called when visual properties of the tabs are
  120. //     changed.  For example, color, mouse-over, and on-click. This member
  121. //     must be overridden in derived classes.
  122. // Parameters:
  123. //     lpRect - The rectangular area of the window that is invalid.
  124. //     bAnimate - TRUE to animate changes in bounding rectangle.
  125. //-------------------------------------------------------------------------
  126. void RedrawControl(LPCRECT lpRect, BOOL bAnimate);
  127. //-----------------------------------------------------------------------
  128. // Summary:
  129. //     Call this member to select a CXTPTabManagerItem tab.  A selected tab
  130. //     if the currently active tab.
  131. // Parameters:
  132. //     pItem - CXTPTabManagerItem tab to select.
  133. // Remarks:
  134. //     This member will will select the specified CXTPTabManagerItem.
  135. //
  136. //           SetCurSel will set the current CXTPTabManagerItem by its index
  137. //           within the collection of items.
  138. //
  139. //           A tab is selected when it has focus or is clicked.
  140. // See Also: CXTPTabManagerItem, GetCurSel, SetCurSel, GetSelectedItem
  141. //-----------------------------------------------------------------------
  142. void SetSelectedItem(CXTPTabManagerItem* pItem);
  143. //-----------------------------------------------------------------------
  144. // Summary:
  145. //     This method is called before item click
  146. // Parameters:
  147. //     pItem - Pointer to item is about to be clicked
  148. // Returns:
  149. //     TRUE if cancel process
  150. //-----------------------------------------------------------------------
  151. BOOL OnBeforeItemClick(CXTPTabManagerItem* pItem);
  152. //-----------------------------------------------------------------------
  153. // Summary:
  154. //     This method retrieves borders of toolbar
  155. // Returns:
  156. //     Borders of toolbar
  157. //-----------------------------------------------------------------------
  158. CRect GetBorders();
  159. //-----------------------------------------------------------------------
  160. // Summary:
  161. //     This method is called to draw the command bar in the given context.
  162. // Parameters:
  163. //     pDC - Pointer to a valid device context
  164. //     rcClipBox - The rectangular area of the control that is invalid
  165. //-----------------------------------------------------------------------
  166. void DrawCommandBar(CDC* pDC, CRect rcClipBox);
  167. //-----------------------------------------------------------------------
  168. // Summary:
  169. //     This method calculates the dimensions of a toolbar.
  170. // Parameters:
  171. //     nLength - Length of the bar.
  172. //     dwMode - Mode to dock.
  173. //     nWidth - Width of the bar.
  174. // Returns:
  175. //     Size of the docked toolbar.
  176. //-----------------------------------------------------------------------
  177. CSize CalcDockingLayout(int nLength, DWORD dwMode, int nWidth);
  178. //-----------------------------------------------------------------------
  179. // Summary:
  180. //     This method calculates the dimensions of a toolbar.
  181. // Parameters:
  182. //     nLength - The requested dimension of the control bar, either horizontal or vertical, depending on dwMode.
  183. //     dwMode - Mode to dock.
  184. // Returns:
  185. //     Size of the docked toolbar.
  186. //-----------------------------------------------------------------------
  187. CSize CalcDynamicLayout(int nLength, DWORD dwMode);
  188. //-----------------------------------------------------------------------
  189. // Summary:
  190. //     Resets the controls to their original state.
  191. // Parameters:
  192. //     bShowWarningMessage - TRUE to show warning message
  193. //-----------------------------------------------------------------------
  194. void Reset(BOOL bShowWarningMessage);
  195. //-----------------------------------------------------------------------
  196. // Summary:
  197. //     This method is called when control is dropped to the command bar.
  198. // Parameters:
  199. //     pDataObject - Points to a CXTPControl object
  200. //     dropEffect  - DROPEFFECT enumerator.
  201. //     ptDrop      - Point where user drops the control.
  202. //     ptDrag      - Point where user starts drag the control.
  203. //-----------------------------------------------------------------------
  204. void OnCustomizeDrop(CXTPControl* pDataObject, DROPEFFECT& dropEffect, CPoint ptDrop, CPoint ptDrag);
  205. protected:
  206. protected:
  207. //{{AFX_CODEJOCK_PRIVATE
  208. DECLARE_MESSAGE_MAP()
  209. //{{AFX_VIRTUAL(CXTPTabToolBar)
  210. //}}AFX_VIRTUAL
  211. //{{AFX_MSG(CXTPTabToolBar)
  212. afx_msg void OnMouseLeave();
  213. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  214. afx_msg INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
  215. afx_msg void OnSysColorChange();
  216. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  217. //}}AFX_MSG
  218. protected:
  219. CXTPTabPaintManager* m_pTabPaintManager;  // Tab PaintManager
  220. CRect m_rcTabControl;                     // Bounding rectangle of Tabs
  221. int m_nMinWidth;            // Minimum available width of toolbar
  222. };
  223. AFX_INLINE CXTPTabPaintManager* CXTPTabToolBar::GetPaintManager() const {
  224. return m_pTabPaintManager;
  225. }
  226. AFX_INLINE void CXTPTabToolBar::SetMinimumWidth(int nMinWidth) {
  227. m_nMinWidth = nMinWidth;
  228. }
  229. #endif // #if !defined(__XTPTABTOOLBAR_H__)