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

对话框与窗口

开发平台:

Visual C++

  1. // XTPRibbonControlTab.h: interface for the CXTPRibbonControlTab class.
  2. //
  3. // This file is a part of the XTREME RIBBON 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(__XTPRIBBONCONTROLTAB_H__)
  22. #define __XTPRIBBONCONTROLTAB_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. class CXTPRibbonGroups;
  28. class CXTPRibbonBar;
  29. class CXTPRibbonGroup;
  30. class CXTPRibbonTab;
  31. #include "CommandBars/XTPControlPopup.h"
  32. #include "TabManager/XTPTabManager.h"
  33. //-----------------------------------------------------------------------
  34. // Summary:
  35. //     Structure used as parameter for TCN_SELCHANGING and TCN_SELCHANGE messages when Ribbon tab is changed
  36. //-----------------------------------------------------------------------
  37. struct NMXTPTABCHANGE : public NMXTPCONTROL
  38. {
  39. CXTPRibbonTab* pTab;    // Ribbon Tab to be selected
  40. };
  41. //===========================================================================
  42. // Summary:
  43. //     CXTPRibbonControlTab is a CXTPTabManager derived class, It represents tabs of the ribbon bar
  44. //===========================================================================
  45. class _XTP_EXT_CLASS CXTPRibbonControlTab : public CXTPControlPopup, public CXTPTabManager
  46. {
  47. DECLARE_XTP_CONTROL(CXTPRibbonControlTab)
  48. public:
  49. //-----------------------------------------------------------------------
  50. // Summary:
  51. //     Constructs a CXTPRibbonControlTab object
  52. //-----------------------------------------------------------------------
  53. CXTPRibbonControlTab();
  54. //-----------------------------------------------------------------------
  55. // Summary:
  56. //     Destroys a CXTPRibbonControlTab object, handles cleanup and deallocation
  57. //-----------------------------------------------------------------------
  58. virtual ~CXTPRibbonControlTab();
  59. public:
  60. //-----------------------------------------------------------------------
  61. // Summary:
  62. //     Call this member to get a pointer to the tab paint manager.
  63. //     The tab paint manager is used to customize the appearance of
  64. //     CXTPTabManagerItem objects and the tab manager.  I.e. Tab colors,
  65. //     styles, etc...  This member must be overridden in
  66. //     derived classes.
  67. // Returns:
  68. //     Pointer to CXTPTabPaintManager that contains the visual elements
  69. //     of the tabs.
  70. //-----------------------------------------------------------------------
  71. virtual CXTPTabPaintManager* GetPaintManager() const;
  72. //-----------------------------------------------------------------------
  73. // Summary:
  74. //     Retrieves parent CXTPRibbonBar object
  75. //-----------------------------------------------------------------------
  76. CXTPRibbonBar* GetRibbonBar() const;
  77. //-----------------------------------------------------------------------
  78. // Summary:
  79. //     Cal this method to find tab by its identifier
  80. // Parameters:
  81. //     nId - Identifier of tab to be found
  82. // Returns:
  83. //     Pointer to CXTPRibbonTab object with specified identifier
  84. // See Also: GetTab
  85. //-----------------------------------------------------------------------
  86. CXTPRibbonTab* FindTab(int nId) const;
  87. //-----------------------------------------------------------------------
  88. // Summary:
  89. //     Cal this method to get tab in specified position
  90. // Parameters:
  91. //     nIndex - Index of tab to retrieve
  92. // Returns:
  93. //     Pointer to CXTPRibbonTab object in specified position
  94. // See Also: FindTab
  95. //-----------------------------------------------------------------------
  96. CXTPRibbonTab* GetTab(int nIndex) const;
  97. //-----------------------------------------------------------------------
  98. // Summary:
  99. //     Call this member to select a tab in the ribbon bar.
  100. // Parameters:
  101. //     pItem - Points to a CXTPTabManagerItem object to be selected.
  102. //-----------------------------------------------------------------------
  103. void SetSelectedItem(CXTPTabManagerItem* pItem);
  104. protected:
  105. //-----------------------------------------------------------------------
  106. // Summary:
  107. //     This method is called to update position of TabManager.
  108. //-----------------------------------------------------------------------
  109. void Reposition();
  110. //-------------------------------------------------------------------------
  111. // Summary:
  112. //     This virtual member is called to determine if control has focus and need
  113. //     to draw focused rectangle around focused item
  114. // Returns:
  115. //     TRUE if header has has focus
  116. //-------------------------------------------------------------------------
  117. virtual BOOL HeaderHasFocus() const;
  118. //-----------------------------------------------------------------------
  119. // Summary:
  120. //     Call this member to set focus to the control.
  121. // Parameters:
  122. //     bFocused - TRUE to set focus
  123. //-----------------------------------------------------------------------
  124. virtual void SetFocused(BOOL bFocused);
  125. //-----------------------------------------------------------------------
  126. // Summary:
  127. //     Call this member to get the focused state of the control.
  128. // Returns:
  129. //     TRUE if the control has focus; otherwise FALSE.
  130. //-----------------------------------------------------------------------
  131. virtual BOOL IsFocused() const;
  132. //----------------------------------------------------------------------
  133. // Summary:
  134. //     This method is called when the user activate control using its underline.
  135. //----------------------------------------------------------------------
  136. void OnUnderlineActivate();
  137. //----------------------------------------------------------------------
  138. // Summary:
  139. //     This method is called to check if control accept focus
  140. // See Also: SetFocused
  141. //----------------------------------------------------------------------
  142. virtual BOOL IsFocusable() const;
  143. //----------------------------------------------------------------------
  144. // Summary:
  145. //     This method is called when the control becomes selected.
  146. // Parameters:
  147. //     bSelected - TRUE if the control becomes selected.
  148. // Returns:
  149. //     TRUE if successful; otherwise returns FALSE
  150. //----------------------------------------------------------------------
  151. BOOL  OnSetSelected(int bSelected);
  152. //----------------------------------------------------------------------
  153. // Summary:
  154. //     This method is called when a non-system key is pressed.
  155. // Parameters:
  156. //     nChar - Specifies the virtual key code of the given key.
  157. //     lParam   - Specifies additional message-dependent information.
  158. // Returns:
  159. //     TRUE if key handled, otherwise returns FALSE
  160. //----------------------------------------------------------------------
  161. BOOL OnHookKeyDown (UINT nChar, LPARAM lParam);
  162. protected:
  163. //-----------------------------------------------------------------------
  164. // Summary:
  165. //     This member is called when the icon of the ribbon tab needs to be
  166. //     drawn.
  167. // Parameters:
  168. //     pDC    - Pointer to the destination device context.
  169. //     pt     - Specifies the location of the image.
  170. //     pItem  - CXTPTabManagerItem object to draw icon on.
  171. //     bDraw  - TRUE if the icon needs to be drawn, I.e. the icon size
  172. //              changed.  FALSE if the icon does not need to be
  173. //              drawn or redrawn.
  174. //     szIcon - Size of the tab icon.
  175. // Remarks:
  176. //     For example, on mouseover.  This member is overridden by its
  177. //     descendants.  This member must be overridden in
  178. //     derived classes.
  179. // Returns:
  180. //     TRUE if the icon was successfully drawn, FALSE if the icon
  181. //     was not drawn.
  182. //-----------------------------------------------------------------------
  183. BOOL DrawIcon(CDC* pDC, CPoint pt, CXTPTabManagerItem* pItem, BOOL bDraw, CSize& szIcon) const;
  184. //-----------------------------------------------------------------------
  185. // Summary:
  186. //     Initiates redrawing of the ribbon bar control.
  187. // Remarks:
  188. //     Call this member function if you want to initialize redrawing
  189. //     of the control. The control will be redrawn taking into account
  190. //     its latest state.
  191. // Parameters:
  192. //     lpRect - The rectangular area of the window that is invalid.
  193. //     bAnimate - TRUE to animate changes in bounding rectangle.
  194. //-----------------------------------------------------------------------
  195. void RedrawControl(LPCRECT lpRect, BOOL bAnimate);
  196. //-----------------------------------------------------------------------
  197. // Summary:
  198. //     Checks to see if the mouse is locked.
  199. // Remarks:
  200. //     The mouse is locked when a CXTPCommandBarsPopup is currently visible.
  201. // Returns:
  202. //     TRUE if locked; otherwise returns FALSE.
  203. //-----------------------------------------------------------------------
  204. BOOL IsMouseLocked() const;
  205. //----------------------------------------------------------------------
  206. // Summary:
  207. //     This method is called to draw the control.
  208. // Parameters:
  209. //     pDC - Pointer to a valid device context.
  210. //----------------------------------------------------------------------
  211. void Draw(CDC* pDC);
  212. void DoPropExchange(CXTPPropExchange* pPX);
  213. void Copy(CXTPControl* pControl, BOOL bRecursive = FALSE);
  214. BOOL IsPopupBarTracking() const;
  215. protected:
  216. //{{AFX_CODEJOCK_PRIVATE
  217. void OnClick(BOOL bKeyboard = FALSE, CPoint pt = CPoint(0, 0));
  218. void ShowPopupBar(BOOL bKeyboard);
  219. BOOL OnSetPopup(BOOL bPopup);
  220. void SetEnabled(BOOL bEnabled);
  221. CString GetItemTooltip(const CXTPTabManagerItem* pItem) const;
  222. virtual void AdjustExcludeRect(CRect& rc, BOOL bVertical);
  223. //}}AFX_CODEJOCK_PRIVATE
  224. protected:
  225. //{{AFX_CODEJOCK_PRIVATE
  226. virtual HRESULT GetAccessibleChildCount(long* pcountChildren);
  227. virtual HRESULT GetAccessibleChild(VARIANT varChild, IDispatch** ppdispChild);
  228. virtual HRESULT GetAccessibleName(VARIANT varChild, BSTR* pszName);
  229. virtual HRESULT GetAccessibleRole(VARIANT varChild, VARIANT* pvarRole);
  230. virtual HRESULT AccessibleLocation(long *pxLeft, long *pyTop, long *pcxWidth, long* pcyHeight, VARIANT varChild);
  231. virtual HRESULT AccessibleHitTest(long xLeft, long yTop, VARIANT* pvarChild);
  232. virtual HRESULT GetAccessibleState(VARIANT varChild, VARIANT* pvarState);
  233. virtual HRESULT GetAccessibleDefaultAction(VARIANT varChild, BSTR* pszDefaultAction);
  234. virtual HRESULT AccessibleDoDefaultAction(VARIANT varChild);
  235. virtual HRESULT AccessibleSelect(long flagsSelect, VARIANT varChild);
  236. //}}AFX_CODEJOCK_PRIVATE
  237. protected:
  238. BOOL m_bFocused; // TRUE if groups focused
  239. friend class CXTPRibbonBar;
  240. };
  241. AFX_INLINE CXTPRibbonBar* CXTPRibbonControlTab::GetRibbonBar() const {
  242. return (CXTPRibbonBar*)m_pParent;
  243. }
  244. #endif // !defined(__XTPRIBBONCONTROLTAB_H__)