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

对话框与窗口

开发平台:

Visual C++

  1. // XTButtonTheme.h: interface for the CXTButtonTheme 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(__XTBUTTONTHEME_H__)
  22. #define __XTBUTTONTHEME_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTThemeManager.h"
  28. #include "Common/XTPDrawHelpers.h"
  29. class CXTButton;
  30. DECLARE_THEME_FACTORY(CXTButtonTheme)
  31. // -------------------------------------------------------------------
  32. // Summary:
  33. //     CXTButtonTheme is used to draw the CXTButton object. All
  34. //     themes used for CXTButton should inherit from this base class.
  35. // -------------------------------------------------------------------
  36. class _XTP_EXT_CLASS CXTButtonTheme : public CXTThemeManagerStyle
  37. {
  38. public:
  39. // ----------------------------------------------
  40. // Summary:
  41. //     Constructs a CXTButtonTheme object.
  42. // ----------------------------------------------
  43. CXTButtonTheme();
  44. // ----------------------------------------------------------------
  45. // Summary:
  46. //     Destroys a CXTButtonTheme object, handles cleanup and
  47. //     deallocation.
  48. // ----------------------------------------------------------------
  49. virtual ~CXTButtonTheme();
  50. public:
  51. //--------------------------------------------------------------------
  52. // Summary:
  53. //     Call this member function to return a pointer to the Windows
  54. //     theme API wrapper for this control.
  55. // Returns:
  56. //     A CXTPWinThemeWrapper pointer.
  57. //--------------------------------------------------------------------
  58. CXTPWinThemeWrapper* GetThemeWrapper();
  59. // -----------------------------------------------------------------------
  60. // Summary:
  61. //     This member function is used to determine if the button should
  62. //     displayed raised borders on mouse over.
  63. // Parameters:
  64. //     pButton - Points to a CXTButton object.
  65. // Returns:
  66. //     TRUE if the button can display border highlights, otherwise returns
  67. //     FALSE.
  68. // -----------------------------------------------------------------------
  69. virtual BOOL CanHilite(CXTButton* pButton);
  70. //-----------------------------------------------------------------------
  71. // Summary:
  72. //     This member function is called to determine if the button should
  73. //     be drawn using Windows XP themes.
  74. // Parameters:
  75. //     pButton - Points to a CXTButton object.
  76. // Returns:
  77. //     TRUE if the button is to be drawn using Windows XP themes,
  78. //     otherwise FALSE.
  79. //-----------------------------------------------------------------------
  80. virtual BOOL UseWinXPThemes(CXTButton* pButton);
  81. //-----------------------------------------------------------------------
  82. // Summary:
  83. //     Call this member function to determine if icons are displayed
  84. //     for the button.
  85. // Returns:
  86. //     TRUE if icons are displayed, otherwise FALSE.
  87. //-----------------------------------------------------------------------
  88. virtual BOOL IsIconVisible() const;
  89. //-----------------------------------------------------------------------
  90. // Summary:
  91. //     Call this member function to enable or disable icon display
  92. //     for the button.
  93. // Parameters:
  94. //     bShowIcon - TRUE to display button icon.
  95. //-----------------------------------------------------------------------
  96. virtual void ShowIcon(BOOL bShowIcon);
  97. //-----------------------------------------------------------------------
  98. // Summary:
  99. //     This member function is called by the theme manager to refresh
  100. //     the visual styles used by each components theme.
  101. //-----------------------------------------------------------------------
  102. virtual void RefreshMetrics();
  103. //-----------------------------------------------------------------------
  104. // Summary:
  105. //     This member function is used to return a pointer the font used
  106. //     by the button to display text.
  107. // Parameters:
  108. //     pButton - Points to a CXTButton object.
  109. // Returns:
  110. //     A CFont object that represents the font used to display text
  111. //     for the button if successful, otherwise NULL.
  112. //-----------------------------------------------------------------------
  113. virtual CFont* GetThemeFont(CXTButton* pButton) const;
  114. //-----------------------------------------------------------------------
  115. // Summary:
  116. //     This member function is used to set the font used by the button
  117. // Parameters:
  118. //     pFont - Points to a CFont object.
  119. //-----------------------------------------------------------------------
  120. virtual void SetThemeFont(CFont* pFont);
  121. //-----------------------------------------------------------------------
  122. // Summary:
  123. //     This method will allow the user to define the default colors for the
  124. //     background shadow and highlight colors for the button.
  125. // Parameters:
  126. //     clr3DFace    - An RGB value that represents the user defined
  127. //                    face color for three dimensional display elements.
  128. //     clr3DHilight - An RGB value that represents the user defined
  129. //                    highlight color for three dimensional display
  130. //                    elements (edges facing the light source.)
  131. //     clr3DShadow  - An RGB value that represents the user defined
  132. //                    shadow color for three dimensional display
  133. //                    elements (edges facing away from the light source).
  134. //     clrBtnText   - An RGB value that represents the user defined
  135. //                    text color on push buttons.
  136. //-----------------------------------------------------------------------
  137. virtual void SetAlternateColors(COLORREF clr3DFace, COLORREF clr3DHilight, COLORREF clr3DShadow, COLORREF clrBtnText);
  138. //-----------------------------------------------------------------------
  139. // Summary:
  140. //     This member function sets the default face color for the button.
  141. // Parameters:
  142. //     clrFace - An RGB value that represents the user defined face color.
  143. //-----------------------------------------------------------------------
  144. virtual void SetColorFace(COLORREF clrFace);
  145. //-----------------------------------------------------------------------
  146. // Summary:
  147. //     This member function gets the current face color.
  148. // Returns:
  149. //     An RGB value that represents the current face color.
  150. //-----------------------------------------------------------------------
  151. virtual COLORREF GetColorFace();
  152. //-----------------------------------------------------------------------
  153. // Summary:
  154. //     This member function sets the default highlight color for the button.
  155. // Parameters:
  156. //     clrHilite - An RGB value that represents the user defined highlight color.
  157. //-----------------------------------------------------------------------
  158. virtual void SetColorHilite(COLORREF clrHilite);
  159. //-----------------------------------------------------------------------
  160. // Summary:
  161. //     This member function sets the default shadow color for the button.
  162. // Parameters:
  163. //     clrShadow - An RGB value that represents the user defined shadow color.
  164. //-----------------------------------------------------------------------
  165. virtual void SetColorShadow(COLORREF clrShadow);
  166. //-----------------------------------------------------------------------
  167. // Summary:
  168. //     This member function sets the default text color for the button.
  169. // Parameters:
  170. //     clrText - An RGB value that represents the user defined text color.
  171. //-----------------------------------------------------------------------
  172. virtual void SetColorText(COLORREF clrText);
  173. protected:
  174. // --------------------------------------------------------------------
  175. // Summary:
  176. //     This member function will set the proper XY coordinates for the
  177. //     button text and image.
  178. // Parameters:
  179. //     point   - XY location of the text and image that are displayed.
  180. //     size    - Initial size of the image associated with the button.
  181. //     pButton - Points to a CXTButton object.
  182. // --------------------------------------------------------------------
  183. virtual void OffsetPoint(CPoint& point, CSize size, CXTButton* pButton);
  184. //-----------------------------------------------------------------------
  185. // Summary:
  186. //     This member function is called to determine the location of
  187. //     the text displayed for the button.
  188. // Parameters:
  189. //     nState   - A UINT value that represents the current state for
  190. //                the button.
  191. //     rcItem   - A CRect object that represents the current size
  192. //                for the button.
  193. //     sizeText - A CSize object that represents the current size for
  194. //                the button text.
  195. //     pButton  - Points to a CXTButton object.
  196. // Returns:
  197. //     A CPoint object that represents the x-y location for the
  198. //     button text.
  199. //-----------------------------------------------------------------------
  200. virtual CPoint GetTextPosition(UINT nState, CRect& rcItem, CSize& sizeText, CXTButton* pButton);
  201. //-----------------------------------------------------------------------
  202. // Summary:
  203. //     Call this member function to return the color used to draw
  204. //     the button text.
  205. // Parameters:
  206. //     nState  - A UINT value that represents the current state for
  207. //               the button.
  208. //     pButton - Points to a CXTButton object.
  209. // Returns:
  210. //     An RGB value that represents the button text color.
  211. //-----------------------------------------------------------------------
  212. virtual COLORREF GetTextColor(UINT nState, CXTButton* pButton);
  213. //-----------------------------------------------------------------------
  214. // Summary:
  215. //     This member function is called to draw the text for the button.
  216. // Parameters:
  217. //     pDC     - A CDC pointer that represents the current device
  218. //               context.
  219. //     nState  - A UINT value that represents the current state for
  220. //               the button.
  221. //     rcItem  - A CRect reference that represents the current size
  222. //               for the button.
  223. //     pButton - Points to a CXTButton object.
  224. //-----------------------------------------------------------------------
  225. virtual void DrawButtonText(CDC* pDC, UINT nState, CRect& rcItem, CXTButton* pButton);
  226. // --------------------------------------------------------------------------
  227. // Summary:
  228. //     This member function is called to determine the location for the image
  229. //     displayed for the button.
  230. // Parameters:
  231. //     pDC             -  A CDC pointer that represents the current device
  232. //                        context.
  233. //     nState          -  A UINT value that represents the current state for the
  234. //                        button.
  235. //     rcItem          -  A CRect reference that represents the current size for
  236. //                        the button.
  237. //     bHasPushedImage -  Indicates if the button has a separate image for the
  238. //                        pushed state.
  239. //     pButton         -  Points to a CXTButton object.
  240. // Returns:
  241. //     A CPoint object that represents the x-y location for the button
  242. //     image.
  243. // --------------------------------------------------------------------------
  244. virtual CPoint CalculateImagePosition(CDC* pDC, UINT nState, CRect& rcItem, bool bHasPushedImage, CXTButton* pButton);
  245. //-----------------------------------------------------------------------
  246. // Summary:
  247. //     This member function draws the icon for the button, if one has
  248. //     been defined.
  249. // Parameters:
  250. //     pDC     - A CDC pointer that represents the current device
  251. //               context.
  252. //     nState  - A UINT value that represents the current state for
  253. //               the button.
  254. //     rcItem  - A CRect reference that represents the current size
  255. //               for the button.
  256. //     pButton - Points to a CXTButton object.
  257. //-----------------------------------------------------------------------
  258. virtual void DrawButtonIcon(CDC* pDC, UINT nState, CRect& rcItem, CXTButton* pButton);
  259. //-----------------------------------------------------------------------
  260. // Summary:
  261. //     This member function is called to draw the button.
  262. // Parameters:
  263. //     lpDIS   - A long pointer to a DRAWITEMSTRUCT structure. The
  264. //               structure contains information about the item to
  265. //               be drawn and the type of drawing required.
  266. //     pButton - Points to a CXTButton object.
  267. //-----------------------------------------------------------------------
  268. virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS, CXTButton* pButton);
  269. //-----------------------------------------------------------------------
  270. // Summary:
  271. //     This member function is called to draw the Windows XP theme
  272. //     background for the button.
  273. // Parameters:
  274. //     lpDIS   - A long pointer to a DRAWITEMSTRUCT structure. The
  275. //               structure contains information about the item to
  276. //               be drawn and the type of drawing required.
  277. //     pButton - Points to a CXTButton object.
  278. // Returns:
  279. //     TRUE if the background was drawn successfully, otherwise returns
  280. //     FALSE.
  281. //-----------------------------------------------------------------------
  282. virtual BOOL DrawWinThemeBackground(LPDRAWITEMSTRUCT lpDIS, CXTButton* pButton);
  283. //-----------------------------------------------------------------------
  284. // Summary:
  285. //     This member function is called to draw the background for the
  286. //     button.
  287. // Parameters:
  288. //     lpDIS   - A long pointer to a DRAWITEMSTRUCT structure. The
  289. //               structure contains information about the item to
  290. //               be drawn and the type of drawing required.
  291. //     pButton - Points to a CXTButton object.
  292. // Returns:
  293. //     TRUE if the background was drawn successfully, otherwise returns
  294. //     FALSE.
  295. //-----------------------------------------------------------------------
  296. virtual BOOL DrawButtonThemeBackground(LPDRAWITEMSTRUCT lpDIS, CXTButton* pButton);
  297. //-----------------------------------------------------------------------
  298. // Summary:
  299. //     This member function is called to draw the focus rectangle
  300. //     for the button.
  301. // Parameters:
  302. //     pDC     - A CDC pointer that represents the current device
  303. //               context.
  304. //     nState  - A UINT value that represents the current state for
  305. //               the button.
  306. //     rcItem  - A CRect reference that represents the current size
  307. //               for the button.
  308. //     pButton - Points to a CXTButton object.
  309. //-----------------------------------------------------------------------
  310. virtual void DrawFocusRect(CDC* pDC, UINT nState, CRect& rcItem, CXTButton* pButton);
  311. protected:
  312. BOOL                  m_bShowIcon;          // TRUE if the buttons displays an icon.
  313. BOOL                  m_bOffsetHiliteText;  // TRUE if highlighted text is animated.
  314. CFont*                m_pFont;              // Points to a user defined font for the theme.
  315. CXTPPaintManagerColor m_crBack;             // RGB value for background color.
  316. CXTPPaintManagerColor m_crText;             // RGB value for text color.
  317. CXTPPaintManagerColor m_crTextDisabled;     // RGB value for disabled text color.
  318. CXTPPaintManagerColor m_crBorderHilite;     // RGB value for border highlight color.
  319. CXTPPaintManagerColor m_crBorderShadow;     // RGB value for border shadow color.
  320. CXTPPaintManagerColor m_crBorder3DHilite;   // RGB value for 3D border highlight color.
  321. CXTPPaintManagerColor m_crBorder3DShadow;   // RGB value for 3D border shadow color.
  322. CXTPWinThemeWrapper   m_themeWrapper;       // Wraps the Windows XP theme API that is used to display Windows XP themes.
  323. friend class CXTButton;
  324. friend class CXTThemeManager;
  325. };
  326. //===========================================================================
  327. AFX_INLINE CXTPWinThemeWrapper* CXTButtonTheme::GetThemeWrapper() {
  328. return &m_themeWrapper;
  329. }
  330. AFX_INLINE void CXTButtonTheme::ShowIcon(BOOL bShowIcon) {
  331. m_bShowIcon = bShowIcon;
  332. }
  333. AFX_INLINE BOOL CXTButtonTheme::IsIconVisible() const {
  334. return m_bShowIcon;
  335. }
  336. // -------------------------------------------------------------------
  337. // Summary:
  338. //     CXTButtonThemeOfficeXP is a CXTButtonTheme derived class
  339. //     that is used to draw an Office XP style theme for the button.
  340. // -------------------------------------------------------------------
  341. class _XTP_EXT_CLASS CXTButtonThemeOfficeXP : public CXTButtonTheme
  342. {
  343. public:
  344. // ----------------------------------------------------------------------------
  345. // Summary:
  346. //     Constructs a CXTButtonThemeOfficeXP object.
  347. // Parameters:
  348. //     bWordTheme - TRUE to use the MS Word style theme to draw the border and
  349. //                  focus rectangle for the button.
  350. // ----------------------------------------------------------------------------
  351. CXTButtonThemeOfficeXP(BOOL bWordTheme = FALSE);
  352. // --------------------------------------------------------------------
  353. // Summary:
  354. //     Destroys a CXTButtonThemeOfficeXP object, handles cleanup
  355. //     and deallocation.
  356. // --------------------------------------------------------------------
  357. virtual ~CXTButtonThemeOfficeXP();
  358. public:
  359. //-----------------------------------------------------------------------
  360. // Summary:
  361. //     This member function is used to determine if the button should
  362. //     displayed raised borders on mouse over.
  363. // Parameters:
  364. //     pButton - Points to a CXTButton object.
  365. // Returns:
  366. //     TRUE if the button can display border highlights, otherwise
  367. //     returns FALSE.
  368. //-----------------------------------------------------------------------
  369. virtual BOOL CanHilite(CXTButton* pButton);
  370. //-----------------------------------------------------------------------
  371. // Summary:
  372. //     This member function is called by the theme manager to refresh
  373. //     the visual styles used by each components theme.
  374. //-----------------------------------------------------------------------
  375. virtual void RefreshMetrics();
  376. //-----------------------------------------------------------------------
  377. // Summary:
  378. //     Call this member function to enable or disable MS Word style
  379. //     theme for the button.
  380. // Parameters:
  381. //     bWordTheme - TRUE to use the MS Word style theme to draw the
  382. //                  border and focus rectangle for the button.
  383. //-----------------------------------------------------------------------
  384. virtual void UseWordTheme(BOOL bWordTheme);
  385. //-----------------------------------------------------------------------
  386. // Summary:
  387. //     Call this member function to set the pushed background color.
  388. // Parameters:
  389. //     color - RGB color value.
  390. //-----------------------------------------------------------------------
  391. virtual void SetBackPushedColor(COLORREF color);
  392. //-----------------------------------------------------------------------
  393. // Summary:
  394. //     Call this member function to set the highlight background color.
  395. // Parameters:
  396. //     color - RGB color value.
  397. //-----------------------------------------------------------------------
  398. virtual void SetBackHiliteColor(COLORREF color);
  399. //-----------------------------------------------------------------------
  400. // Summary:
  401. //     Call this member function to set the pushed text color.
  402. // Parameters:
  403. //     color - RGB color value.
  404. //-----------------------------------------------------------------------
  405. virtual void SetTextPushedColor(COLORREF color);
  406. //-----------------------------------------------------------------------
  407. // Summary:
  408. //     Call this member function to set the SetAlternateColors text color.
  409. // Parameters:
  410. //     color - RGB color value.
  411. //-----------------------------------------------------------------------
  412. virtual void SetTextHiliteColor(COLORREF color);
  413. protected:
  414. //-----------------------------------------------------------------------
  415. // Summary:
  416. //     Call this member function to return the color used to draw
  417. //     the button text.
  418. // Parameters:
  419. //     nState  - A UINT value that represents the current state for
  420. //               the button.
  421. //     pButton - Points to a CXTButton object.
  422. // Returns:
  423. //     An RGB value that represents the button text color.
  424. //-----------------------------------------------------------------------
  425. virtual COLORREF GetTextColor(UINT nState, CXTButton* pButton);
  426. //-----------------------------------------------------------------------
  427. // Summary:
  428. //     This member function draws the icon for the button, if one has
  429. //     been defined.
  430. // Parameters:
  431. //     pDC     - A CDC pointer that represents the current device
  432. //               context.
  433. //     nState  - A UINT value that represents the current state for
  434. //               the button.
  435. //     rcItem  - A CRect reference that represents the current size
  436. //               for the button.
  437. //     pButton - Points to a CXTButton object.
  438. //-----------------------------------------------------------------------
  439. virtual void DrawButtonIcon(CDC* pDC, UINT nState, CRect& rcItem, CXTButton* pButton);
  440. //-----------------------------------------------------------------------
  441. // Summary:
  442. //     This member function is called to draw the background for the
  443. //     button.
  444. // Parameters:
  445. //     lpDIS   - A long pointer to a DRAWITEMSTRUCT structure. The
  446. //               structure contains information about the item to
  447. //               be drawn and the type of drawing required.
  448. //     pButton - Points to a CXTButton object.
  449. // Returns:
  450. //     TRUE if the background was drawn successfully, otherwise returns
  451. //     FALSE.
  452. //-----------------------------------------------------------------------
  453. virtual BOOL DrawButtonThemeBackground(LPDRAWITEMSTRUCT lpDIS, CXTButton* pButton);
  454. //-----------------------------------------------------------------------
  455. // Summary:
  456. //     This member function is called to draw the focus rectangle
  457. //     for the button.
  458. // Parameters:
  459. //     pDC     - A CDC pointer that represents the current device
  460. //               context.
  461. //     nState  - A UINT value that represents the current state for
  462. //               the button.
  463. //     rcItem  - A CRect reference that represents the current size
  464. //               for the button.
  465. //     pButton - Points to a CXTButton object.
  466. //-----------------------------------------------------------------------
  467. virtual void DrawFocusRect(CDC* pDC, UINT nState, CRect& rcItem, CXTButton* pButton);
  468. protected:
  469. BOOL     m_bWordTheme;   // TRUE if MS Word theme is used.
  470. BOOL     m_bFadedIcon;   // TRUE if the button uses faded icons.
  471. BOOL     m_bAnimateIcon; // TRUE if the button animates on mouse over.
  472. CXTPPaintManagerColor m_crBackPushed; // RGB value for pushed background color.
  473. CXTPPaintManagerColor m_crBackHilite; // RGB value for highlighted background color.
  474. CXTPPaintManagerColor m_crTextPushed; // RGB value for highlighted text color.
  475. CXTPPaintManagerColor m_crTextHilite; // RGB value for pushed text color.
  476. CXTPPaintManagerColor m_crBackChecked;// RGB value for when the control is checked.
  477. };
  478. //===========================================================================
  479. AFX_INLINE void CXTButtonThemeOfficeXP::UseWordTheme(BOOL bWordTheme) {
  480. m_bWordTheme = bWordTheme;
  481. RefreshMetrics();
  482. }
  483. // ---------------------------------------------------------------------
  484. // Summary:
  485. //     CXTButtonThemeOffice2003 is a CXTButtonThemeOfficeXP
  486. //     derived class that is used to draw an Office 2003 style theme for
  487. //     the button.
  488. // ---------------------------------------------------------------------
  489. class _XTP_EXT_CLASS CXTButtonThemeOffice2003 : public CXTButtonThemeOfficeXP
  490. {
  491. public:
  492. //-----------------------------------------------------------------------
  493. // Summary:
  494. //     Constructs a CXTButtonThemeOfficeXP object.
  495. // Parameters:
  496. //     bWordTheme - TRUE to use the MS Word style theme to draw the
  497. //                  border and focus rectangle for the button.
  498. //-----------------------------------------------------------------------
  499. CXTButtonThemeOffice2003(BOOL bWordTheme = FALSE);
  500. //-----------------------------------------------------------------------
  501. // Summary:
  502. //     This member function is called by the theme manager to refresh
  503. //     the visual styles used by each components theme.
  504. //-----------------------------------------------------------------------
  505. virtual void RefreshMetrics();
  506. protected:
  507. //-----------------------------------------------------------------------
  508. // Summary:
  509. //     This member function draws the icon for the button, if one has
  510. //     been defined.
  511. // Parameters:
  512. //     pDC     - A CDC pointer that represents the current device
  513. //               context.
  514. //     nState  - A UINT value that represents the current state for
  515. //               the button.
  516. //     rcItem  - A CRect reference that represents the current size
  517. //               for the button.
  518. //     pButton - Points to a CXTButton object.
  519. //-----------------------------------------------------------------------
  520. virtual void DrawButtonIcon(CDC* pDC, UINT nState, CRect& rcItem, CXTButton* pButton);
  521. //-----------------------------------------------------------------------
  522. // Summary:
  523. //     This member function is called to draw the background for the
  524. //     button.
  525. // Parameters:
  526. //     lpDIS   - A long pointer to a DRAWITEMSTRUCT structure. The
  527. //               structure contains information about the item to
  528. //               be drawn and the type of drawing required.
  529. //     pButton - Points to a CXTButton object.
  530. // Returns:
  531. //     TRUE if the background was drawn successfully, otherwise returns
  532. //     FALSE.
  533. //-----------------------------------------------------------------------
  534. virtual BOOL DrawButtonThemeBackground(LPDRAWITEMSTRUCT lpDIS, CXTButton* pButton);
  535. };
  536. //===========================================================================
  537. // Summary:
  538. //     CXTDisabledButtonTheme is a CXTButtonTheme derived class
  539. //     that is used to draw 3D disabled icons for the button.
  540. //===========================================================================
  541. class _XTP_EXT_CLASS CXTDisabledButtonTheme : public CXTButtonTheme
  542. {
  543. protected:
  544. // ------------------------------------------------------------------------
  545. // Summary:
  546. //     This member function draws the icon for the button, if one has
  547. //     been defined.
  548. // Parameters:
  549. //     pDC     -  A CDC pointer that represents the current device context.
  550. //     nState  -  A UINT value that represents the current state for the
  551. //                button.
  552. //     rcItem  -  A CRect reference that represents the current size for the
  553. //                button.
  554. //     pButton -  Points to a CXTButton object.
  555. // ------------------------------------------------------------------------
  556. virtual void DrawButtonIcon(CDC* pDC, UINT nState, CRect& rcItem, CXTButton* pButton);
  557. friend class CXTButton;
  558. };
  559. //===========================================================================
  560. // Summary:
  561. //     CXTToolbarButtonTheme is a CXTDisabledButtonTheme derived class
  562. //     that is used to draw Windows XP style toolbar theme for the button.
  563. //===========================================================================
  564. class _XTP_EXT_CLASS CXTToolbarButtonTheme : public CXTDisabledButtonTheme
  565. {
  566. public:
  567. //-----------------------------------------------------------------------
  568. // Summary:
  569. //     This member function is called to draw the Windows XP theme
  570. //     background for the button.
  571. // Parameters:
  572. //     lpDIS   - A long pointer to a DRAWITEMSTRUCT structure. The
  573. //               structure contains information about the item to
  574. //               be drawn and the type of drawing required.
  575. //     pButton - Points to a CXTButton object.
  576. // Returns:
  577. //     TRUE if the background was drawn successfully, otherwise returns
  578. //     FALSE.
  579. //-----------------------------------------------------------------------
  580. virtual BOOL DrawWinThemeBackground(LPDRAWITEMSTRUCT lpDIS, CXTButton* pButton);
  581. //-----------------------------------------------------------------------
  582. // Summary:
  583. //     This member function is called by the theme manager to refresh
  584. //     the visual styles used by each components theme.
  585. //-----------------------------------------------------------------------
  586. virtual void RefreshMetrics();
  587. //-----------------------------------------------------------------------
  588. // Summary:
  589. //     This member function is called to determine if the button should
  590. //     be drawn using Windows XP themes.
  591. // Parameters:
  592. //     pButton - Points to a CXTButton object.
  593. // Returns:
  594. //     TRUE if the button is to be drawn using Windows XP themes,
  595. //     otherwise FALSE.
  596. //-----------------------------------------------------------------------
  597. virtual BOOL UseWinXPThemes(CXTButton* pButton);
  598. protected:
  599. friend class CXTButton;
  600. };
  601. /////////////////////////////////////////////////////////////////////////////
  602. #endif // !defined(__XTBUTTONTHEME_H__)