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

对话框与窗口

开发平台:

Visual C++

  1. // XTTabBaseTheme.h: interface for the CXTTabBaseTheme class.
  2. //
  3. // This file is a part of the XTREME CONTROLS 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(__XTTABCTRLTHEME_H__)
  22. #define __XTTABCTRLTHEME_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "Common/XTPDrawHelpers.h"
  28. #include "XTThemeManager.h"
  29. class CXTTabCtrl;
  30. class CXTTabBase;
  31. class CXTTabCtrlButton;
  32. class CXTTabCtrlButtons;
  33. class CXTTcbItem;
  34. DECLARE_THEME_FACTORY(CXTTabBaseTheme)
  35. //===========================================================================
  36. // Summary:
  37. //     CXTTabBaseTheme is used to draw the CXTTabBase object.  All themes
  38. //     used for CXTTabBase should inherit from this base class.
  39. //===========================================================================
  40. class _XTP_EXT_CLASS CXTTabBaseTheme : public CXTThemeManagerStyle
  41. {
  42. public:
  43. //-------------------------------------------------------------------------
  44. // Summary:
  45. //     Construct a CXTTabBaseTheme object.
  46. //-------------------------------------------------------------------------
  47. CXTTabBaseTheme();
  48. //-------------------------------------------------------------------------
  49. // Summary:
  50. //     Destroys a CXTTabBaseTheme object, handles cleanup and deallocation.
  51. //-------------------------------------------------------------------------
  52. virtual ~CXTTabBaseTheme();
  53. public:
  54. //-------------------------------------------------------------------------
  55. // Summary:
  56. //     Call this function to refresh the colors of the Tab control.
  57. //-------------------------------------------------------------------------
  58. virtual void RefreshMetrics();
  59. //-----------------------------------------------------------------------
  60. // Summary:
  61. //     This member function is called to render the tab control using
  62. //     the specified theme.
  63. // Parameters:
  64. //     pDC      - A CDC pointer that represents the current device
  65. //                context.
  66. //     pTabCtrl - A pointer to a CXTTabBase object.  Contains information
  67. //                about the tab control.
  68. //-----------------------------------------------------------------------
  69. virtual void DrawTabCtrl(CDC* pDC, CXTTabBase* pTabCtrl);
  70. //-----------------------------------------------------------------------
  71. // Summary:
  72. //      Call this member function to get the current background color for the theme.
  73. // Returns:
  74. //      A CXTPPaintManagerColor object that contains the value for the current background color.
  75. // See Also:
  76. //      CXTTabBaseThemeOffice2003::GetBackColor
  77. //-----------------------------------------------------------------------
  78. virtual CXTPPaintManagerColor GetBackColor() const;
  79. //-----------------------------------------------------------------------
  80. // Summary:
  81. //      Call this member function to redraw the borders for a particular tab.
  82. // Parameters:
  83. //      pTabCtrl - A pointer to a CXTTabBase
  84. //      pMember - A pointer to a CXTTcbItem struct that contains information about the tab.
  85. // See Also:
  86. //      CXTTabBaseThemeOfficeXP::AdjustBorders
  87. //-----------------------------------------------------------------------
  88. virtual void AdjustBorders(CXTTabBase* pTabCtrl, CXTTcbItem* pMember);
  89. //-----------------------------------------------------------------------
  90. // Summary:
  91. //     This member function is called to draw a single button of a tab control.
  92. // Parameters:
  93. //     pDC       - A CDC pointer that represents the current device
  94. //                 context.
  95. //     pButton   - A pointer to a CXTTabCtrlButton object.
  96. //     clrButton - The color of the button.
  97. // Note:
  98. //     This function ASSERTS if called. Must be overridden.
  99. //-----------------------------------------------------------------------
  100. virtual void DrawButton(CDC* pDC, CXTTabCtrlButton* pButton, COLORREF clrButton);
  101. virtual COLORREF FillButtons(CDC* pDC, CXTTabCtrlButtons* pButtons);
  102. protected:
  103. //-----------------------------------------------------------------------
  104. // Summary:
  105. //      This member function is called to draw the borders around the tab control.
  106. // Parameters:
  107. //      pDC      - A pointer to a valid device context.
  108. //      rcClient - A CRect object that contains the location and the dimensions of the Tab Control.
  109. // See Also:
  110. //      CXTTabBaseThemeOfficeXP::DrawBorders
  111. //-----------------------------------------------------------------------
  112. virtual void DrawBorders(CDC* pDC, const CRect& rcClient);
  113. //-----------------------------------------------------------------------
  114. // Summary:
  115. //      This member function is called to draw the header for the Tab Control.
  116. // Parameters:
  117. //      pDC          - A pointer to a valid device context.
  118. //      pTabCtrlBase - A pointer to a CXTTabBase object.  Contains information
  119. //                     about the tab control.
  120. //      rcHeader     - A CRect object that contains the location and the dimensions of the header.
  121. // See Also:
  122. //      CXTTabBaseThemeOfficeXP::FillHeader, FillTabFaceNativeWinXP
  123. //-----------------------------------------------------------------------
  124. virtual void FillHeader(CDC* pDC, CXTTabBase* pTabCtrlBase, CRect rcHeader);
  125. //-----------------------------------------------------------------------
  126. // Summary:
  127. //      This member function is called to draw the tab face so that the
  128. //      tab appears with the Native Windows XP theme.
  129. // Parameters:
  130. //      pDC       - A pointer to a valid device context.
  131. //      pTabCtrl  - A pointer to a CTabCtrl object. This is the associated TabControl object.
  132. //      rcItem    - A CRect object that contains the location and the dimensions of the tab.
  133. //      bSelected - TRUE if the tab is selected. FALSE otherwise.
  134. // See Also:
  135. //      CXTTabBaseThemeOfficeXP::FillTabFace, CXTTabBaseThemeOffice2003::FillTabFace,
  136. //      FillTabFace, DrawTab, DrawTabIcon, DrawTabText
  137. //-----------------------------------------------------------------------
  138. virtual void FillTabFaceNativeWinXP(CDC* pDC, CTabCtrl* pTabCtrl, CRect rcItem, BOOL bSelected);
  139. //-----------------------------------------------------------------------
  140. // Summary:
  141. //      This member function is called draw the tab face.
  142. // Parameters:
  143. //      pDC       - A pointer to a valid device context.
  144. //      pTabCtrl  - A pointer to a CTabCtrl object.
  145. //      rcItem    - A CRect object that contains the location and the dimensions of the tab.
  146. //      bSelected - TRUE if the tab is selected.  FALSE otherwise.
  147. // See Also:
  148. //      CXTTabBaseThemeOfficeXP::FillTabFace, CXTTabBaseThemeOffice2003::FillTabFace,
  149. //      DrawTab, DrawTabIcon, DrawTabText, FillTabFaceNativeWinXP
  150. //-----------------------------------------------------------------------
  151. virtual void FillTabFace(CDC* pDC, CTabCtrl* pTabCtrl, CRect rcItem, BOOL bSelected);
  152. //-----------------------------------------------------------------------
  153. // Summary:
  154. //      This member function is called to draw a tab on the TabControl.
  155. // Parameters:
  156. //      pDC          - A pointer to a valid device context.
  157. //      pTabCtrlBase - A pointer to a CXTTabBase object.  Contains information
  158. //                     about the tab control.
  159. //      iItem        - An int that specifies the tab item to draw.
  160. // See Also:
  161. //      CXTTabBaseThemeOfficeXP::FillTabFace, CXTTabBaseThemeOffice2003::FillTabFace,
  162. //      DrawTabIcon, DrawTabText, FillTabFaceNativeWinXP, CXTExcelTabCtrlTheme::DrawTab,
  163. //      FillTabFace
  164. //-----------------------------------------------------------------------
  165. virtual void DrawTab(CDC* pDC, CXTTabBase* pTabCtrlBase, int iItem);
  166. //-----------------------------------------------------------------------
  167. // Summary:
  168. //      This member function is called to draw the icon on the tab.
  169. // Parameters:
  170. //      pDC      - A pointer to a valid device context.
  171. //      pTabCtrl - A pointer to a CTabCtrl object.
  172. //      rcItem   - A CRect object that contains the location and the dimensions of the tab.
  173. //      iItem    - An int that represents the tab item to draw the icon on.
  174. // See Also:
  175. //      CXTTabBaseThemeOfficeXP::FillTabFace, CXTTabBaseThemeOffice2003::FillTabFace,
  176. //      DrawTab, DrawTabText, FillTabFace,
  177. //      FillTabFaceNativeWinXP, CXTExcelTabCtrlTheme::DrawTab
  178. //-----------------------------------------------------------------------
  179. virtual void DrawTabIcon(CDC* pDC, CTabCtrl* pTabCtrl, CRect& rcItem, int iItem);
  180. //-----------------------------------------------------------------------
  181. // Summary:
  182. //     This member function is called to draw text on the tab.
  183. // Parameters:
  184. //      pDC       - Pointer to a valid device context.
  185. //      pTabCtrl  - A pointer to a CTabCtrl object.
  186. //      rcItem    - A CRect object that contains the location and the dimensions of the tab.
  187. //      iItem     - Index of the item to draw
  188. //      bSelected - TRUE if the tab is selected.  FALSE otherwise.
  189. //      bBoldFont - TRUE if the text is to be bold. FALSE otherwise.
  190. // See Also:
  191. //      CXTTabBaseThemeOfficeXP::FillTabFace, CXTTabBaseThemeOffice2003::FillTabFace,
  192. //      DrawTabIcon, FillTabFace, FillTabFaceNativeWinXP,
  193. //      CXTExcelTabCtrlTheme::DrawTab
  194. //-----------------------------------------------------------------------
  195. virtual void DrawTabText(CDC* pDC, CTabCtrl* pTabCtrl, CRect& rcItem, int iItem, BOOL bSelected, BOOL bBoldFont);
  196. //-----------------------------------------------------------------------
  197. // Summary:
  198. //      Call this member function to get the bounding rectangle of the tab
  199. //      header area.
  200. // Parameters:
  201. //      pTabCtrlBase - A pointer to a CXTTabBase object. Contains information
  202. //                     about the tab control.
  203. // Returns:
  204. //      A CRect object that contains the bounding rectangle of the header area.
  205. // See Also:
  206. //      FillHeader
  207. //-----------------------------------------------------------------------
  208. virtual CRect GetHeaderRect(CXTTabBase* pTabCtrlBase);
  209. //-----------------------------------------------------------------------
  210. // Summary:
  211. //     Call this function to paint the Navigation buttons on the tab control.
  212. // Parameters:
  213. //     pTabCtrlBase - A pointer to a CXTTabBase object. Contains
  214. //                    information about the tab control.
  215. // See Also:
  216. //      DrawButton
  217. //-----------------------------------------------------------------------
  218. virtual void ShowButtons(CXTTabBase* pTabCtrlBase);
  219. //-----------------------------------------------------------------------
  220. // Summary:
  221. //      This member function is called to draw a border around a Tab child window.
  222. // Parameters:
  223. //      pDC - A pointer to a valid device context.
  224. //      r   - A CRect object that contains the location and the dimensions of the child window.
  225. // See Also:
  226. //      CXTTabBaseThemeOfficeXP::DrawBorder, CXTTabBaseThemeOffice2003::DrawBorder
  227. //-----------------------------------------------------------------------
  228. virtual void DrawBorder(CDC* pDC, const CRect& r);
  229. //-----------------------------------------------------------------------
  230. // Summary:
  231. //      This member function is called to determine the tab style.
  232. // Parameters:
  233. //      pTabCtrl - A pointer to a CTabCtrl object.
  234. // Returns:
  235. //      A DWORD representing the tab style.
  236. // See Also:
  237. //      IsLeft, IsRight, IsTop, IsBottom, IsVert, IsHorz
  238. //-----------------------------------------------------------------------
  239. DWORD GetTabStyle(CTabCtrl* pTabCtrl) const {
  240. ASSERT(::IsWindow(pTabCtrl->GetSafeHwnd())); return (pTabCtrl->GetStyle() & (TCS_VERTICAL|TCS_RIGHT|TCS_BOTTOM));
  241. }
  242. //-----------------------------------------------------------------------
  243. // Summary:
  244. //      This member function is called to determine if the tabs are drawn
  245. //      on the left side of the TabControl.
  246. // Parameters:
  247. //      dwStyle - A DWORD value that represents the current tab style.
  248. // Returns:
  249. //      A BOOL.  TRUE if the tabs are drawn on the left side of the TabControl.
  250. //      FALSE otherwise.
  251. // See Also:
  252. //      GetTabStyle, IsRight, IsTop, IsBottom, IsVert, IsHorz
  253. //-----------------------------------------------------------------------
  254. BOOL IsLeft(DWORD dwStyle) const {
  255. return ((dwStyle & (TCS_VERTICAL|TCS_RIGHT|TCS_BOTTOM)) == TCS_VERTICAL);
  256. }
  257. //-----------------------------------------------------------------------
  258. // Summary:
  259. //      This member function is called to determine if the tabs are drawn
  260. //      on the right side of the TabControl.
  261. // Parameters:
  262. //      dwStyle - A DWORD value that represents the current tab style.
  263. // Returns:
  264. //      A BOOL.  TRUE if the tabs are drawn on the right side of the TabControl.
  265. //      FALSE otherwise.
  266. // See Also:
  267. //      GetTabStyle, IsLeft, IsTop, IsBottom, IsVert, IsHorz
  268. //-----------------------------------------------------------------------
  269. BOOL IsRight(DWORD dwStyle) const {
  270. return ((dwStyle & (TCS_VERTICAL|TCS_RIGHT|TCS_BOTTOM)) == (TCS_VERTICAL|TCS_RIGHT));
  271. }
  272. //-----------------------------------------------------------------------
  273. // Summary:
  274. //      This member function is called to determine if the tabs are drawn
  275. //      on the top of the TabControl.
  276. // Parameters:
  277. //      dwStyle - A DWORD value that represents the current tab style.
  278. // Returns:
  279. //      A BOOL.  TRUE if the tabs are drawn on the top of the TabControl.
  280. //      FALSE otherwise.
  281. // See Also:
  282. //      GetTabStyle, IsLeft, IsRight, IsBottom, IsVert, IsHorz
  283. //-----------------------------------------------------------------------
  284. BOOL IsTop(DWORD dwStyle) const {
  285. return ((dwStyle & (TCS_VERTICAL|TCS_RIGHT|TCS_BOTTOM)) == 0);
  286. }
  287. //-----------------------------------------------------------------------
  288. // Summary:
  289. //      This member function is called to determine if the tabs are drawn
  290. //      on the bottom of the TabControl.
  291. // Parameters:
  292. //      dwStyle - A DWORD value that represents the current tab style.
  293. // Returns:
  294. //      A BOOL.  TRUE if the tabs are drawn on the bottom of the TabControl.
  295. //      FALSE otherwise.
  296. // See Also:
  297. //      GetTabStyle, IsLeft, IsRight, IsTop, IsVert, IsHorz
  298. //-----------------------------------------------------------------------
  299. BOOL IsBottom(DWORD dwStyle) const {
  300. return ((dwStyle & (TCS_VERTICAL|TCS_RIGHT|TCS_BOTTOM)) == TCS_BOTTOM);
  301. }
  302. //-----------------------------------------------------------------------
  303. // Summary:
  304. //      This member function is called to determine if the tabs are drawn
  305. //      vertically on the TabControl.
  306. // Parameters:
  307. //      dwStyle - A DWORD value that represents the current tab style.
  308. // Returns:
  309. //      A BOOL.  TRUE if the tabs are drawn vertically on the TabControl.
  310. //      FALSE otherwise.
  311. // See Also:
  312. //      GetTabStyle, IsLeft, IsRight, IsTop, IsBottom, IsHorz
  313. //-----------------------------------------------------------------------
  314. BOOL IsVert(DWORD dwStyle) const {
  315. return (IsRight(dwStyle) || IsLeft(dwStyle));
  316. }
  317. //-----------------------------------------------------------------------
  318. // Summary:
  319. //      This member function is called to determine if the tabs are drawn
  320. //      horizontally on the TabControl.
  321. // Parameters:
  322. //      dwStyle - A DWORD value that represents the current tab style.
  323. // Returns:
  324. //      A BOOL.  TRUE if the tabs are drawn horizontally on the TabControl.
  325. //      FALSE otherwise.
  326. // See Also:
  327. //      GetTabStyle, IsLeft, IsRight, IsTop, IsVert, IsBottom
  328. //-----------------------------------------------------------------------
  329. BOOL IsHorz(DWORD dwStyle) const {
  330. return (IsTop(dwStyle) || IsBottom(dwStyle));
  331. }
  332. //-----------------------------------------------------------------------
  333. // Summary:
  334. //       This member function is called to swap the dark and the light colors.
  335. // Parameters:
  336. //       clrLight - An RGB value that represents the light color.
  337. //       clrDark  - An RGB value that represents the dark color.
  338. // See Also:
  339. //      VerticalLine, HorizontalLine, Pixel
  340. //-----------------------------------------------------------------------
  341. void SwapColors(COLORREF& clrLight, COLORREF& clrDark);
  342. //-----------------------------------------------------------------------
  343. // Summary:
  344. //       This member function is called to draw a vertical line.
  345. // Parameters:
  346. //      pDC     - A pointer to a valid device context.
  347. //      xPos    - An int that specifies the logical x-coordinate of the line.
  348. //      yPos    - An int that specifies the logical y-coordinate of the line.
  349. //      nLength - Specifies the length of the line.
  350. //      clr     - An RGB value that specifies the color of the line.
  351. // See Also:
  352. //      HorizontalLine, Pixel, SwapColors
  353. //-----------------------------------------------------------------------
  354. void VerticalLine(CDC* pDC, int xPos, int yPos, int nLength, COLORREF clr);
  355. //-----------------------------------------------------------------------
  356. // Summary:
  357. //     This member function is called to draw a horizontal line.
  358. // Parameters:
  359. //      pDC     - A pointer to a valid device context.
  360. //      xPos    - An int that specifies the logical x-coordinate of the line.
  361. //      yPos    - An int that specifies the logical y-coordinate of the line.
  362. //      nLength - Specifies the length of the line.
  363. //      clr     - An RGB value that specifies the color of the line.
  364. // See Also:
  365. //      VerticalLine, Pixel, SwapColors
  366. //-----------------------------------------------------------------------
  367. void HorizontalLine(CDC* pDC, int xPos, int yPos, int nLength, COLORREF clr);
  368. //-----------------------------------------------------------------------
  369. // Summary:
  370. //      This member function is called to draw a single pixel.
  371. // Parameters:
  372. //      pDC  - A pointer to a valid device context.
  373. //      xPos - An int that specifies the logical x-coordinate of the pixel.
  374. //      yPos - An int that specifies the logical y-coordinate of the pixel.
  375. //      clr  - An RGB value that specifies the color of the pixel.
  376. // See Also:
  377. //       VerticalLine, HorizontalLine, SwapColors
  378. //-----------------------------------------------------------------------
  379. void Pixel(CDC* pDC, int xPos, int yPos, COLORREF clr);
  380. private:
  381. typedef void (AFX_CDECL* LPFNDRAWROTATEDBITS)(int cx, int cy, UINT* pSrcBits, UINT* pDestBits);
  382. void DrawRotatedButton(CDC* pDC, CRect rcItem, BOOL bSelected, BOOL bSwap, LPFNDRAWROTATEDBITS pfnRotatedProc);
  383. static void AFX_CDECL DrawRotatedBitsLeft(int cx, int cy, UINT* pSrcBits, UINT* pDestBits);
  384. static void AFX_CDECL DrawRotatedBitsRight(int cx, int cy, UINT* pSrcBits, UINT* pDestBits);
  385. static void AFX_CDECL DrawRotatedBitsBottom(int cx, int cy, UINT* pSrcBits, UINT* pDestBits);
  386. public:
  387. BOOL m_bSystemDrawing;  // TRUE to perform system drawing. FALSE otherwise.
  388. BOOL m_bUseWinThemes;   // TRUE to use Windows XP themes when available. FALSE otherwise.
  389. protected:
  390. int  m_iEdge;    // The Y dimension of a 3D border.
  391. CXTPWinThemeWrapper m_wrapTheme; // Windows Theme wrapper.
  392. CXTPPaintManagerColor m_clrNormalText; // Color of text in a normal tab.  Normal tabs are tabs that are not selected or disabled.
  393. CXTPPaintManagerColor m_clrSelectedText; // Color of text in a "selected" tab button.  The "selected" tab button is the tab with focus.  I.e. The tab becomes active when it is clicked.
  394. };
  395. //===========================================================================
  396. // Summary:
  397. //     Class CXTTabBaseThemeOfficeXP is derived from CXTTabBaseTheme.
  398. //     This class is used to implement the office XP theme for the tab controls.
  399. //===========================================================================
  400. class _XTP_EXT_CLASS CXTTabBaseThemeOfficeXP : public CXTTabBaseTheme
  401. {
  402. public:
  403. //-------------------------------------------------------------------------
  404. // Summary:
  405. //     Construct a CXTTabBaseThemeOfficeXP object.
  406. //-------------------------------------------------------------------------
  407. CXTTabBaseThemeOfficeXP();
  408. public:
  409. //-------------------------------------------------------------------------
  410. // Summary:
  411. //     This function calls the base class RefreshMetrics and then
  412. //     calls DeleteObject() for the CPen member variables m_penBlack,
  413. //     m_penWhite, m_penFace, and m_penText.  Then the CPen member variables
  414. //     are created with the system default colors for COLOR_BTNTEXT,
  415. //     COLOR_3DHILIGHT, COLOR_3DFACE, and COLOR_3DSHADOW.  Finally, the
  416. //     member variable m_iEdge is set to the SM_CYEDGE system value.
  417. //-------------------------------------------------------------------------
  418. virtual void RefreshMetrics();
  419. //-----------------------------------------------------------------------
  420. // Summary:
  421. //      Call this member function to redraw the borders for a particular tab.
  422. // Parameters:
  423. //      pTabCtrl - A pointer to a CXTTabBase
  424. //      pMember - A pointer to a CXTTcbItem struct that contains information about the tab.
  425. // See Also:
  426. //      CXTTabBaseTheme::AdjustBorders
  427. //-----------------------------------------------------------------------
  428. virtual void AdjustBorders(CXTTabBase* pTabCtrl, CXTTcbItem* pMember);
  429. //-----------------------------------------------------------------------
  430. // Summary:
  431. //     This member is called to draw single button of tab control.
  432. // Parameters:
  433. //     pDC       - A CDC pointer that represents the current device
  434. //                 context.
  435. //     pButton   - A pointer to a CXTTabCtrlButton object.
  436. //     clrButton - The color of the button.
  437. // Note:
  438. //     This function ASSERTS if called. Must be overridden.
  439. //-----------------------------------------------------------------------
  440. virtual void DrawButton(CDC* pDC, CXTTabCtrlButton* pButton, COLORREF clrButton);
  441. virtual COLORREF FillButtons(CDC* pDC, CXTTabCtrlButtons* pButtons);
  442. protected:
  443. //-----------------------------------------------------------------------
  444. // Summary:
  445. //      This member function is called to draw the icon on the tab.
  446. // Parameters:
  447. //      pDC      - A pointer to a valid device context.
  448. //      pTabCtrl - A pointer to a CTabCtrl object.
  449. //      rcItem   - A CRect object that contains the location and the dimensions of the tab.
  450. //      iItem    - An int that represents the tab item to draw the icon on.
  451. // See Also:
  452. //      CXTTabBaseTheme::FillTabFace, CXTTabBaseThemeOffice2003::FillTabFace,
  453. //      CXTTabBaseTheme::DrawTabIcon, FillTabFace,
  454. //      CXTTabBaseTheme::FillTabFaceNativeWinXP, CXTExcelTabCtrlTheme::DrawTab
  455. //-----------------------------------------------------------------------
  456. virtual void DrawTabIcon(CDC* pDC, CTabCtrl* pTabCtrl, CRect& rcItem, int iItem);
  457. //-----------------------------------------------------------------------
  458. // Summary:
  459. //      This member function is called to draw the borders around the tab control.
  460. // Parameters:
  461. //      pDC      - A pointer to a valid device context.
  462. //      rcClient - A CRect object that contains the location and the dimensions of the Tab Control.
  463. // See Also:
  464. //      CXTTabBaseTheme::DrawBorders
  465. //-----------------------------------------------------------------------
  466. virtual void DrawBorders(CDC* pDC, const CRect& rcClient);
  467. //-----------------------------------------------------------------------
  468. // Summary:
  469. //      This member function is called to draw the header for the Tab Control.
  470. // Parameters:
  471. //      pDC          - A pointer to a valid device context.
  472. //      pTabCtrlBase - A pointer to a CXTTabBase object.  Contains information
  473. //                     about the tab control.
  474. //      rcHeader     - A CRect object that contains the location and the dimensions of the header.
  475. // See Also:
  476. //      CXTTabBaseTheme::FillHeader, CXTTabBaseThemeOffice2003::FillHeader
  477. //-----------------------------------------------------------------------
  478. virtual void FillHeader(CDC* pDC, CXTTabBase* pTabCtrlBase, CRect rcHeader);
  479. //-----------------------------------------------------------------------
  480. // Summary:
  481. //      This member function is called draw the tab face.
  482. // Parameters:
  483. //      pDC       - A pointer to a valid device context.
  484. //      pTabCtrl  - A pointer to a CTabCtrl object.
  485. //      rcItem    - A CRect object that contains the location and the dimensions of the tab.
  486. //      bSelected - TRUE if the tab is selected.  FALSE otherwise.
  487. // See Also:
  488. //      CXTTabBaseTheme::FillTabFace, CXTTabBaseThemeOffice2003::FillTabFace,
  489. //      CXTTabBaseThemeOffice2003::FillTabFace, DrawTabIcon,
  490. //      CXTExcelTabCtrlTheme::DrawTab, CXTTabBaseTheme::FillTabFaceNativeWinXP
  491. //-----------------------------------------------------------------------
  492. virtual void FillTabFace(CDC* pDC, CTabCtrl* pTabCtrl, CRect rcItem, BOOL bSelected);
  493. //-----------------------------------------------------------------------
  494. // Summary:
  495. //      This member function is called to draw a border around a Tab child window.
  496. // Parameters:
  497. //      pDC - A pointer to a valid device context.
  498. //      r   - A CRect object that contains the location and the dimensions of the child window.
  499. // See Also:
  500. //      CXTTabBaseTheme::DrawBorder, CXTTabBaseThemeOffice2003::DrawBorder
  501. //-----------------------------------------------------------------------
  502. virtual void DrawBorder(CDC* pDC, const CRect& r);
  503. };
  504. //===========================================================================
  505. // Summary:
  506. //     Class CXTTabBaseThemeOffice2003 is derived from CXTTabBaseThemeOfficeXP.
  507. //===========================================================================
  508. class _XTP_EXT_CLASS CXTTabBaseThemeOffice2003 : public CXTTabBaseThemeOfficeXP
  509. {
  510. public:
  511. //-------------------------------------------------------------------------
  512. // Summary:
  513. //     Construct a CXTTabBaseThemeOffice2003 object.
  514. //-------------------------------------------------------------------------
  515. CXTTabBaseThemeOffice2003();
  516. public:
  517. //-------------------------------------------------------------------------
  518. // Summary:
  519. //     This function calls the base class RefreshMetrics and then
  520. //     calls DeleteObject() for the CPen member variables m_penBlack,
  521. //     m_penWhite, m_penFace, and m_penText.  Then the CPen member variables
  522. //     are created with the system default colors for COLOR_BTNTEXT,
  523. //     COLOR_3DHILIGHT, COLOR_3DFACE, and COLOR_3DSHADOW.  Finally, the
  524. //     member variable m_iEdge is set to the SM_CYEDGE system value.
  525. //-------------------------------------------------------------------------
  526. void RefreshMetrics();
  527. //-----------------------------------------------------------------------
  528. // Summary:
  529. //      This member function is called to get the background for the theme.
  530. // Returns:
  531. //      A CXTPPaintManagerColor object that contains the value for the background color.
  532. // See Also:
  533. //     CXTTabBaseTheme::GetBackColor
  534. //-----------------------------------------------------------------------
  535. virtual CXTPPaintManagerColor GetBackColor() const;
  536. protected:
  537. //-----------------------------------------------------------------------
  538. // Summary:
  539. //      This member function is called to draw the header for the Tab Control.
  540. // Parameters:
  541. //      pDC          - A pointer to a valid device context.
  542. //      pTabCtrlBase - A pointer to a CXTTabBase object.  Contains information
  543. //                     about the tab control.
  544. //      rcHeader     - A CRect object that contains the location and the dimensions of the header.
  545. // See Also:
  546. //      CXTTabBaseTheme::FillHeader, CXTTabBaseThemeOfficeXP::FillHeader
  547. //-----------------------------------------------------------------------
  548. virtual void FillHeader(CDC* pDC, CXTTabBase* pTabCtrlBase, CRect rcHeader);
  549. //-----------------------------------------------------------------------
  550. // Summary:
  551. //      This member function is called to draw the tab face with a gradient fill.
  552. // Parameters:
  553. //      pDC       - A pointer to a valid device context.
  554. //      pTabCtrl  - A pointer to a CTabCtrl object.
  555. //      rcItem    - A CRect object that contains the location and the dimensions of the tab.
  556. //      bSelected - TRUE if the tab is selected. FALSE otherwise.
  557. // Returns:
  558. //      An RBG color that represents the dark color of the gradient fill for the tab.
  559. // See Also:
  560. //      CXTTabBaseThemeOfficeXP::FillTabFace, CXTTabBaseThemeOffice2003::FillTabFace,
  561. //      FillTabFace, DrawTab, DrawTabIcon, DrawTabText
  562. //-----------------------------------------------------------------------
  563. virtual COLORREF GradientFillTabFace(CDC* pDC, CTabCtrl* pTabCtrl, CRect rcItem, BOOL bSelected);
  564. //-----------------------------------------------------------------------
  565. // Summary:
  566. //      This member function is called draw the tab face.
  567. // Parameters:
  568. //      pDC       - A pointer to a valid device context.
  569. //      pTabCtrl  - A pointer to a CTabCtrl object.
  570. //      rcItem    - A CRect object that contains the location and the dimensions of the tab.
  571. //      bSelected - TRUE if the tab is selected.  FALSE otherwise.
  572. // See Also:
  573. //      CXTTabBaseTheme::FillTabFace, CXTTabBaseThemeOfficeXP::FillTabFace,
  574. //      GradientFillTabFace
  575. //-----------------------------------------------------------------------
  576. virtual void FillTabFace(CDC* pDC, CTabCtrl* pTabCtrl, CRect rcItem, BOOL bSelected);
  577. //-----------------------------------------------------------------------
  578. // Summary:
  579. //      This member function is called to draw a border around a Tab child window.
  580. // Parameters:
  581. //      pDC - A pointer to a valid device context.
  582. //      r   - A CRect object that contains the location and the dimensions of the child window.
  583. // See Also:
  584. //      CXTTabBaseTheme::DrawBorder, CXTTabBaseThemeOfficeXP::DrawBorder
  585. //-----------------------------------------------------------------------
  586. virtual void DrawBorder(CDC* pDC, const CRect& r);
  587. virtual COLORREF FillButtons(CDC* pDC, CXTTabCtrlButtons* pButtons);
  588. protected:
  589. CXTPPaintManagerColorGradient m_clrHeaderFace; // Represents the gradient color of the header face.
  590. CXTPPaintManagerColor m_clrShadow;             // Represents the color used for shadows.
  591. CXTPPaintManagerColor m_clrHighlight;          // Represents the highlight color.
  592. CXTPPaintManagerColor m_clrDarkShadow;         // Represents the color used for dark shadows.
  593. CXTPPaintManagerColor m_clrButtonSelected;     // Represents the color used for selected buttons.
  594. CXTPPaintManagerColor m_clrButtonNormal;       // Represents the color used for normal buttons.
  595. };
  596. /////////////////////////////////////////////////////////////////////////////
  597. #endif // !defined(__XTTABCTRLTHEME_H__)