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

对话框与窗口

开发平台:

Visual C++

  1. // XTPTabControl.h: interface for the CXTPTabControl class.
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO 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(__XTPTABCONTROL_H__)
  22. #define __XTPTABCONTROL_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPTabManager.h"
  28. class CXTPTabPaintManager;
  29. class CXTPImageManager;
  30. class CXTPToolTipContext;
  31. //===========================================================================
  32. // Summary:
  33. //     CXTPTabControl is a multiple inheritance class derived from CXTPTabManager and
  34. //     CWnd. It is used to draw enhance tab control with Office 2003, Visual Studio, Win XP tabs.
  35. // See Also:
  36. //     Create, CXTPTabManager::SetColor, CXTPTabManager::SetAppearance
  37. //===========================================================================
  38. class _XTP_EXT_CLASS CXTPTabControl : public CWnd, public CXTPTabManager
  39. {
  40. private:
  41. class CTabControlDropTarget;
  42. public:
  43. //-------------------------------------------------------------------------
  44. // Summary:
  45. //     Constructs a CXTPTabControl object.
  46. //-------------------------------------------------------------------------
  47. CXTPTabControl();
  48. //-------------------------------------------------------------------------
  49. // Summary:
  50. //     Destroys a CXTPTabControl object, handles cleanup and de-allocation
  51. //-------------------------------------------------------------------------
  52. virtual ~CXTPTabControl();
  53. public:
  54. //-----------------------------------------------------------------------
  55. // Summary:
  56. //     Inserts a new tab at the position specified by nItem.
  57. // Parameters:
  58. //     nItem     - Index of the new tab.
  59. //     lpszItem  - Caption of the new tab.
  60. //     hwndChild - Handle to the object to be displayed in the tab. I.e. A Dialog page
  61. //     nImage    - Id of image resource to display in tab is icons are displayed.
  62. //     pAddItem  - Item to add or NULL to create default CXTPTabManagerItem item
  63. // Returns:
  64. //     A pointer to the newly added CXTPTabManagerItem.
  65. //-----------------------------------------------------------------------
  66. CXTPTabManagerItem* InsertItem(int nItem, LPCTSTR lpszItem, HWND hwndChild = NULL, int nImage = -1, CXTPTabManagerItem* pAddItem = NULL);
  67. //-----------------------------------------------------------------------
  68. // Summary:
  69. //     Call this member function to create the Tab Control.
  70. // Parameters:
  71. //     dwStyle    - Style of the Tab Control.
  72. //     rect       - Size of the control.
  73. //     pParentWnd - Parent of the control.
  74. //     nID        - Identifier of the Tab control.
  75. // Returns:
  76. //     TRUE if successful, otherwise returns FALSE.
  77. // See Also:
  78. //     CXTPTabControl::CXTPTabControl, GetPaintManager, CXTPTabManager::SetPosition,
  79. //     CXTPTabManager::SetLayout, GetImageManager
  80. //-----------------------------------------------------------------------
  81. BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  82. public:
  83. //-----------------------------------------------------------------------
  84. // Summary:
  85. //     Call this member to get a pointer to the tab paint manager.
  86. //     The tab paint manager is used to customize the appearance of
  87. //     CXTPTabManagerItem objects and the tab manager.  I.e. Tab colors,
  88. //     styles, etc...  This member must be overridden in
  89. //     derived classes.
  90. // Returns:
  91. //     Pointer to CXTPTabPaintManager that contains the visual elements
  92. //     of the tabs.
  93. //-----------------------------------------------------------------------
  94. virtual CXTPTabPaintManager* GetPaintManager() const;
  95. //-----------------------------------------------------------------------
  96. // Summary:
  97. //     Call this member to set a CXTPTabPaintManager object to the
  98. //     tab manager.
  99. // Parameters:
  100. //     pPaintManager - Pointer to a CXTPTabPaintManager object.
  101. // Remarks:
  102. //     The tab paint manager is used to customize the appearance of
  103. //     CXTPTabManagerItem objects and the tab manager.
  104. //-----------------------------------------------------------------------
  105. virtual void SetPaintManager(CXTPTabPaintManager* pPaintManager);
  106. //-------------------------------------------------------------------------
  107. // Summary:
  108. //     This member recalculates the layout of the tab manager and
  109. //     then repositions itself.  This member must be overridden in
  110. //     derived classes.
  111. //-------------------------------------------------------------------------
  112. virtual void Reposition();
  113. //-------------------------------------------------------------------------
  114. // Summary:
  115. //     This member is called when visual properties of the tabs are
  116. //     changed.  For example, color, mouse-over, and on-click. This member
  117. //     must be overridden in derived classes.
  118. // Parameters:
  119. //     lpRect - The rectangular area of the window that is invalid.
  120. //     bAnimate - TRUE to animate changes in bounding rectangle.
  121. //-------------------------------------------------------------------------
  122. virtual void RedrawControl(LPCRECT lpRect, BOOL bAnimate);
  123. //-----------------------------------------------------------------------
  124. // Summary:
  125. //     Call this member to select a tab.
  126. // Parameters:
  127. //     pItem - Pointer to the tab to be selected.
  128. //-----------------------------------------------------------------------
  129. virtual void SetSelectedItem(CXTPTabManagerItem* pItem);
  130. //-----------------------------------------------------------------------
  131. // Summary:
  132. //     This member is called when a tab button is clicked.  This
  133. //     will select the tab that was clicked.
  134. // Parameters:
  135. //     pItem - Pointer to the CXTPTabManagerItem tab that was clicked.
  136. // See Also: PerformClick
  137. //-----------------------------------------------------------------------
  138. void OnItemClick(CXTPTabManagerItem* pItem);
  139. //-----------------------------------------------------------------------
  140. // Summary:
  141. //     This member is called when the icon of the tab needs to be
  142. //     drawn.
  143. // Parameters:
  144. //     pDC    - Pointer to the destination device context.
  145. //     pt     - Specifies the location of the image.
  146. //     pItem  - CXTPTabManagerItem object to draw icon on.
  147. //     bDraw  - TRUE if the icon needs to be drawn, I.e. the icon size
  148. //              changed.  FALSE if the icon does not need to be
  149. //              drawn or redrawn.
  150. //     szIcon - Size of the tab icon.
  151. // Remarks:
  152. //     For example, on mouse-over.  This member is overridden by its
  153. //     descendants.  This member must be overridden in
  154. //     derived classes.
  155. // Returns:
  156. //     TRUE if the icon was successfully drawn, FALSE if the icon
  157. //     was not drawn.
  158. //-----------------------------------------------------------------------
  159. virtual BOOL DrawIcon(CDC* pDC, CPoint pt, CXTPTabManagerItem* pItem, BOOL bDraw, CSize& szIcon) const;
  160. //-----------------------------------------------------------------------
  161. // Summary:
  162. //     Call this member to set icons of the tabs.
  163. // Parameters:
  164. //     pImageList - Image list containing icons of the tabs
  165. // Remarks:
  166. //     Recommended to use GetImageManager method and CXTPImageManager::SetIcons to add icons.
  167. //-----------------------------------------------------------------------
  168. void SetImageList(CImageList* pImageList);
  169. //-----------------------------------------------------------------------
  170. // Summary:
  171. //     Call this member to get a pointer to the image manager collected icons of tab control.
  172. // Returns:
  173. //     Pointer to CXTPImageManager that contains the icons of the tabs.
  174. // Example:
  175. //     <code>m_wmdTabControl.GetImageManager()->SetIcons(IDR_MAINFRAME);</code>
  176. //-----------------------------------------------------------------------
  177. CXTPImageManager* GetImageManager() const;
  178. //-----------------------------------------------------------------------
  179. // Summary:
  180. //     Call this member to set the specified image manager.
  181. // Parameters:
  182. //     pImageManager - Points to a CXTPImageManager object.
  183. //-----------------------------------------------------------------------
  184. void SetImageManager(CXTPImageManager* pImageManager);
  185. //-----------------------------------------------------------------------
  186. // Summary:
  187. //     Call this method to get tooltip context pointer.
  188. //-----------------------------------------------------------------------
  189. CXTPToolTipContext* GetToolTipContext() const;
  190. //-----------------------------------------------------------------------
  191. // Summary:
  192. //     Call this member function to enable or disable tooltips show
  193. // Parameters:
  194. //     behaviour - Tooltips behaviour will be set. See remarks section for available flags.
  195. // Remarks:
  196. //     <i>behaviour<i> parameter can be one of the following:
  197. //     * <b>xtpTabToolTipNever</b> Show tooltips for tabs always
  198. //     * <b>xtpTabToolTipAlways</b> Doesn't show toltips for tabs
  199. //     * <b> xtpTabToolTipShrinkedOnly</b> Show tooltips only if tab was shrinked (see xtpTabLayoutSizeToFit layout)
  200. //-----------------------------------------------------------------------
  201. void EnableToolTips(XTPTabToolTipBehaviour behaviour = xtpTabToolTipAlways);
  202. //-----------------------------------------------------------------------
  203. // Summary:
  204. //     Call this function to calculate a tab control's display area given
  205. //     a window rectangle, or calculate the window rectangle that would correspond to a given display area.
  206. // Parameters:
  207. //     bLarger - Indicates which operation to perform. If this parameter is TRUE,
  208. //               lpRect specifies a display rectangle and receives the corresponding window rectangle.
  209. //               If this parameter is FALSE, lpRect specifies a window rectangle and receives
  210. //               the corresponding display rectangle.
  211. //     lpRect  - Pointer to aRECT structure that specifies the given rectangle
  212. //               and receives the calculated rectangle.
  213. //-----------------------------------------------------------------------
  214. void AdjustRect(BOOL bLarger, LPRECT lpRect);
  215. protected:
  216. //-----------------------------------------------------------------------
  217. // Summary:
  218. //     This member is called when a tab navigation button is clicked.
  219. // Parameters:
  220. //     pButton - Button that was clicked. The button Identifier, can be one of the values listed in the
  221. //           Remarks section.
  222. // Remarks:
  223. //     Standard ids of buttons are listed below:
  224. //     * <b>xtpTabNavigateButtonLeft</b>  Left tab navigation button.
  225. //     * <b>xtpTabNavigateButtonRight</b> Right tab navigation button.
  226. //     * <b>xtpTabNavigateButtonClose</b> Close tab navigation button.
  227. //
  228. //     This method is overridden in CXTPTabClientWnd::CWorkspace and
  229. //     CXTPTabControl to capture when the tab navigation close "x"
  230. //     button was pressed and deletes the tab.
  231. //
  232. //     This member is called after CXTPTabManagerNavigateButton::PerformClick.
  233. // See Also:
  234. //     CXTPTabManagerNavigateButton::PerformClick, XTPTabNavigateButton
  235. //-----------------------------------------------------------------------
  236. void OnNavigateButtonClick(CXTPTabManagerNavigateButton* pButton);
  237. //-------------------------------------------------------------------------
  238. // Summary:
  239. //     This virtual member is called to determine if control has focus and need
  240. //     to draw focused rectangle around focused item
  241. // Returns:
  242. //     TRUE if header has has focus
  243. //-------------------------------------------------------------------------
  244. virtual BOOL HeaderHasFocus() const;
  245. //-----------------------------------------------------------------------
  246. // Summary:
  247. //     This method is called to set focused item.
  248. // Parameters:
  249. //     pItem - Item that become focused.
  250. // See Also:
  251. //     SetSelectedItem
  252. //-----------------------------------------------------------------------
  253. virtual void SetFocusedItem(CXTPTabManagerItem* pItem);
  254. protected:
  255. //{{AFX_CODEJOCK_PRIVATE
  256. DECLARE_MESSAGE_MAP()
  257. //{{AFX_VIRTUAL(CXTPTabControl)
  258. virtual void PreSubclassWindow();
  259. BOOL DrawParentBackground(CDC* pDC, CRect rc);
  260. virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
  261. BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
  262. //}}AFX_VIRTUAL
  263. //{{AFX_MSG(CXTPTabControl)
  264. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  265. afx_msg void OnPaint();
  266. afx_msg void OnSize(UINT nType, int cx, int cy);
  267. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  268. afx_msg void OnSysColorChange();
  269. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  270. afx_msg void OnMouseLeave();
  271. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  272. afx_msg void OnSetFocus(CWnd* pOldWnd);
  273. afx_msg UINT OnGetDlgCode();
  274. afx_msg void OnKillFocus(CWnd* pNewWnd);
  275. afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM lParam);
  276. //}}AFX_MSG
  277. //}}AFX_CODEJOCK_PRIVATE
  278. private:
  279. BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  280. private:
  281. HWND m_hwndClient;
  282. CXTPTabPaintManager* m_pPaintManager;
  283. CXTPImageManager* m_pImageManager;
  284. CTabControlDropTarget* m_pDropTarget;
  285. CXTPToolTipContext* m_pToolTipContext;
  286. friend class CTabControlDropTarget;
  287. };
  288. //////////////////////////////////////////////////////////////////////////
  289. AFX_INLINE CXTPTabPaintManager* CXTPTabControl::GetPaintManager() const {
  290. return m_pPaintManager;
  291. }
  292. AFX_INLINE CXTPImageManager* CXTPTabControl::GetImageManager() const {
  293. return m_pImageManager;
  294. }
  295. AFX_INLINE BOOL CXTPTabControl::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
  296. return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  297. }
  298. AFX_INLINE CXTPToolTipContext* CXTPTabControl::GetToolTipContext() const {
  299. return m_pToolTipContext;
  300. }
  301. #endif // !defined(__XTPTABCONTROL_H__)