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

对话框与窗口

开发平台:

Visual C++

  1. // XTFlatControlsTheme.h: interface for the CXTFlatComboBoxTheme 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(__XTFLATCONTROLSTHEME_H__)
  22. #define __XTFLATCONTROLSTHEME_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 CXTFlatComboBox;
  30. class CXTFlatEdit;
  31. DECLARE_THEME_FACTORY(CXTFlatComboBoxTheme)
  32. //===========================================================================
  33. // Summary:
  34. //     CXTFlatControlsTheme is used to draw the CXTTabCtrl object.  All themes
  35. //     used for CXTTabCtrl should inherit from this base class.
  36. //===========================================================================
  37. class _XTP_EXT_CLASS CXTFlatComboBoxTheme : public CXTThemeManagerStyle
  38. {
  39. public:
  40. //-----------------------------------------------------------------------
  41. // Summary:
  42. //     Constructs a CXTFlatComboBoxTheme object.
  43. //-----------------------------------------------------------------------
  44. CXTFlatComboBoxTheme();
  45. //-------------------------------------------------------------------------
  46. // Summary:
  47. //     This function refreshes the colors on the flat control.
  48. //-------------------------------------------------------------------------
  49. virtual void RefreshMetrics();
  50. public:
  51. //-----------------------------------------------------------------------
  52. // Summary:
  53. //     Call this function to draw a Flat ComboBox.
  54. // Parameters:
  55. //     pDC    - A CDC pointer that represents the current device
  56. //              context.
  57. //     pCombo - A pointer to a CXTFlatComboBox object.  Represents a flat combo box.
  58. //     eState - An int that is used to specify the state of the flat combo box.
  59. //              Possible values are: NORMAL, RAISED, and PRESSED.
  60. //-----------------------------------------------------------------------
  61. virtual void DrawFlatComboBox(CDC* pDC, CXTFlatComboBox* pCombo, int eState);
  62. //-----------------------------------------------------------------------
  63. // Summary:
  64. //      Call this member function retrieve the dimensions, in pixels, of a
  65. //      3-D drop down arrow box.
  66. // Returns:
  67. //      A reference to a CSize object that contains 3-D border dimensions.
  68. //-----------------------------------------------------------------------
  69. CSize& GetThumbSize() {
  70. return m_sizeThumb;
  71. }
  72. //-----------------------------------------------------------------------
  73. // Summary:
  74. //      Call this member function retrieve the dimensions, in pixels, of a
  75. //      3-D window border.
  76. // Returns:
  77. //      A reference to a CSize object that contains 3-D border dimensions.
  78. //-----------------------------------------------------------------------
  79. CSize& GetBorderSize() {
  80. return m_sizeBorder;
  81. }
  82. //-----------------------------------------------------------------------
  83. // Summary:
  84. //      Call this member function retrieve the dimensions, in pixels, of a
  85. //      3-D window edge.
  86. // Returns:
  87. //      A reference to a CSize object that contains 3-D edge dimensions.
  88. //-----------------------------------------------------------------------
  89. CSize& GetEdgeSize() {
  90. return m_sizeEdge;
  91. }
  92. protected:
  93. //-----------------------------------------------------------------------
  94. // Summary:
  95. //      This member function is called by the Combo Box for drawing the
  96. //      down arrow.
  97. // Parameters:
  98. //      pDC     - Device context for drawing.
  99. //      rcArrow - A rectangle in which to draw.
  100. //      eState  - State of the Combo box
  101. //      pCombo  - Combo box to draw down arrow for
  102. //-----------------------------------------------------------------------
  103. virtual void DrawDownArrow(CDC* pDC, const CRect& rcArrow, int eState, CXTFlatComboBox* pCombo);
  104. //-----------------------------------------------------------------------
  105. // Summary:
  106. //      Call this member function to get the width of the drop down arrow.
  107. // Returns:
  108. //      An int that contains the width of the drop down arrow.
  109. // See Also:
  110. //      DrawDownArrow, DrawArrowBack
  111. //-----------------------------------------------------------------------
  112. int GetDropArrowWidth() const;
  113. //-----------------------------------------------------------------------
  114. // Summary:
  115. //      Call this function to draw the background for the arrow button.
  116. // Parameters:
  117. //      pDC     - A pointer to a valid device context.
  118. //      rcArrow - A CRect object that contains the location and the dimensions of the background.
  119. //      eState  - An int that contains the current state for the arrow button.
  120. //      pCombo  - A pointer to a valid CXTFlatComboBox object.
  121. // See Also:
  122. //      CXTFlatComboBoxThemeOfficeXP::DrawArrowBack, CXTFlatComboBoxThemeOffice2003::DrawArrowBack
  123. //-----------------------------------------------------------------------
  124. virtual void DrawArrowBack(CDC* pDC, CRect& rcArrow, int eState, CXTFlatComboBox* pCombo);
  125. protected:
  126. int m_cxArrow;      // This member variable contains the width of the drop down arrow.
  127. CSize m_sizeThumb;  // Stores dimensions, in pixels, of a 3-D drop down arrow box.
  128. CSize m_sizeBorder; // Stores dimensions, in pixels, of a 3-D window border.
  129. CSize m_sizeEdge;   // Stores dimensions, in pixels, of a 3-D window edge.
  130. };
  131. //===========================================================================
  132. // Summary:
  133. //     CXTFlatComboBoxThemeOfficeXP class is derived from CXTFlatComboBoxTheme.
  134. //     This class is used to create the Office 2000 Theme for flat controls.
  135. //===========================================================================
  136. class _XTP_EXT_CLASS CXTFlatComboBoxThemeOfficeXP : public CXTFlatComboBoxTheme
  137. {
  138. public:
  139. //-----------------------------------------------------------------------
  140. // Summary:
  141. //     Constructs a CXTFlatComboBoxThemeOfficeXP object.
  142. //-----------------------------------------------------------------------
  143. CXTFlatComboBoxThemeOfficeXP();
  144. //-----------------------------------------------------------------------
  145. // Summary:
  146. //     Call this function to draw a rectangle around a ComboBox.
  147. // Parameters:
  148. //     pDC    - A CDC pointer that represents the current device
  149. //              context.
  150. //     pCombo - A pointer to a CXTFlatComboBox object.  Represents a flat combo box.
  151. //     eState - An int that is used to specify the state of the flat combo box.
  152. //              Possible values are: NORMAL, RAISED, and PRESSED.
  153. //-----------------------------------------------------------------------
  154. virtual void DrawFlatComboBox(CDC* pDC, CXTFlatComboBox* pCombo, int eState);
  155. protected:
  156. //-----------------------------------------------------------------------
  157. // Summary:
  158. //      Call this function to draw the background for the arrow button.
  159. // Parameters:
  160. //      pDC     - A pointer to a valid device context.
  161. //      rcArrow - A CRect object that contains the location and the dimensions of the background.
  162. //      eState  - An int that contains the current state for the arrow button.
  163. //      pCombo  - A pointer to a valid CXTFlatComboBox object.
  164. // See Also:
  165. //      CXTFlatComboBoxTheme::DrawArrowBack, CXTFlatComboBoxThemeOffice2003::DrawArrowBack
  166. //-----------------------------------------------------------------------
  167. virtual void DrawArrowBack(CDC* pDC, CRect& rcArrow, int eState, CXTFlatComboBox* pCombo);
  168. //-----------------------------------------------------------------------
  169. // Summary:
  170. //      This member function is called by the Combo Box for drawing the
  171. //      down arrow.
  172. // Parameters:
  173. //      pDC     - Device context for drawing.
  174. //      rcArrow - A rectangle in which to draw.
  175. //      eState  - State of the Combo box
  176. //      pCombo  - Combo box to draw down arrow for
  177. //-----------------------------------------------------------------------
  178. virtual void DrawDownArrow(CDC* pDC, const CRect& rcArrow, int eState, CXTFlatComboBox* pCombo);
  179. };
  180. //===========================================================================
  181. // Summary:
  182. //     CXTFlatComboBoxThemeOffice2003 class is derived from CXTFlatComboBoxThemeOfficeXP.
  183. //     This class is used to create the Office 2003 Theme for flat controls.
  184. //===========================================================================
  185. class _XTP_EXT_CLASS CXTFlatComboBoxThemeOffice2003 : public CXTFlatComboBoxThemeOfficeXP
  186. {
  187. public:
  188. //-----------------------------------------------------------------------
  189. // Summary:
  190. //     Constructs a CXTFlatComboBoxThemeOffice2003 object.
  191. //-----------------------------------------------------------------------
  192. CXTFlatComboBoxThemeOffice2003();
  193. //-----------------------------------------------------------------------
  194. // Summary:
  195. //     Call this function to draw a rectangle around a ComboBox.
  196. // Parameters:
  197. //     pDC    - A CDC pointer that represents the current device
  198. //              context.
  199. //     pCombo - A pointer to a CXTFlatComboBox object.  Represents a flat combo box.
  200. //     eState - An int that is used to specify the state of the flat combo box.
  201. //              Possible values are: NORMAL, RAISED, and PRESSED.
  202. //-----------------------------------------------------------------------
  203. virtual void DrawFlatComboBox(CDC* pDC, CXTFlatComboBox* pCombo, int eState);
  204. protected:
  205. //-----------------------------------------------------------------------
  206. // Summary:
  207. //      Call this function to draw the background for the arrow button.
  208. // Parameters:
  209. //      pDC     - A pointer to a valid device context.
  210. //      rcArrow - A CRect object that contains the location and the dimensions of the background.
  211. //      eState  - An int that contains the current state for the arrow button.
  212. //      pCombo  - A pointer to a valid CXTFlatComboBox object.
  213. // See Also:
  214. //      CXTFlatComboBoxTheme::DrawArrowBack, CXTFlatComboBoxThemeOfficeXP::DrawArrowBack
  215. //-----------------------------------------------------------------------
  216. virtual void DrawArrowBack(CDC* pDC, CRect& rcArrow, int eState, CXTFlatComboBox* pCombo);
  217. };
  218. DECLARE_THEME_FACTORY(CXTFlatEditTheme)
  219. //===========================================================================
  220. // Summary:
  221. //     CXTFlatControlsTheme is used to draw the CXTTabCtrl object.  All themes
  222. //     used for CXTTabCtrl should inherit from this base class.
  223. //===========================================================================
  224. class _XTP_EXT_CLASS CXTFlatEditTheme : public CXTThemeManagerStyle
  225. {
  226. public:
  227. //-----------------------------------------------------------------------
  228. // Summary:
  229. //     Constructs a CXTFlatEditTheme object.
  230. //-----------------------------------------------------------------------
  231. CXTFlatEditTheme();
  232. //-------------------------------------------------------------------------
  233. // Summary:
  234. //     This function refreshes the colors on the flat control.
  235. //-------------------------------------------------------------------------
  236. virtual void RefreshMetrics();
  237. public:
  238. //-----------------------------------------------------------------------
  239. // Summary:
  240. //     Call this function to draw a rectangle around an EditBox.
  241. // Parameters:
  242. //     pDC    - A CDC pointer that represents the current device
  243. //              context.
  244. //     pEdit  - A pointer to an edit box control.
  245. //     rWindow - Area to render.
  246. //     eState - An int that is used to specify the state of the flat edit box.
  247. //-----------------------------------------------------------------------
  248. virtual void DrawBorders(CDC* pDC, CXTFlatEdit* pEdit, const CRect& rWindow, int eState);
  249. protected:
  250. friend class CXTThemeManager;  // Make the CXTThemeManager a friend of the CXTFlatEditTheme class.
  251. };
  252. //===========================================================================
  253. // Summary:
  254. //     CXTFlatEditThemeOfficeXP class is derived from CXTFlatEditTheme.
  255. //     This class is used to create the Office 2000 Theme for flat controls.
  256. //===========================================================================
  257. class CXTFlatEditThemeOfficeXP : public CXTFlatEditTheme
  258. {
  259. public:
  260. //-----------------------------------------------------------------------
  261. // Summary:
  262. //     Constructs a CXTFlatEditThemeOfficeXP object.
  263. //-----------------------------------------------------------------------
  264. CXTFlatEditThemeOfficeXP();
  265. //-----------------------------------------------------------------------
  266. // Summary:
  267. //     This function is called to refresh the colors of the
  268. //     flat controls Office XP theme.
  269. //-----------------------------------------------------------------------
  270. virtual void RefreshMetrics();
  271. //-----------------------------------------------------------------------
  272. // Summary:
  273. //     This member function is called to render the flat edit control using
  274. //     the specified theme.
  275. // Parameters:
  276. //     pDC    - A CDC pointer that represents the current device
  277. //              context.
  278. //     pEdit  - A pointer to an edit box control.
  279. //     rWindow - Area to render.
  280. //     eState - An int that is used to specify the state of the flat edit box.
  281. //-----------------------------------------------------------------------
  282. virtual void DrawBorders(CDC* pDC, CXTFlatEdit* pEdit, const CRect& rWindow, int eState);
  283. public:
  284. CXTPPaintManagerColor m_clrHighlightText;   // Used to specify the color of highlighted text.
  285. CXTPPaintManagerColor m_clrPushedText;      // Used to specify the color of pushed text.
  286. CXTPPaintManagerColor m_clrHighlight;       // Used to specify the color a highlighted object.
  287. CXTPPaintManagerColor m_clrPushed;          // Used to specify the color a pushed object.
  288. CXTPPaintManagerColor m_clrFrameNormal;     // Used to specify the color a normal frame.
  289. CXTPPaintManagerColor m_clrFrameHighlight;  // Used to specify the color a highlighted frame.
  290. CXTPPaintManagerColor m_clrFrameEdit;       // Used to specify the color an edit frame.
  291. CXTPPaintManagerColor m_clrNormal;          // Used to specify the color a normal object.
  292. };
  293. //===========================================================================
  294. // Summary:
  295. //     CXTFlatEditThemeOffice2003 class is derived from CXTFlatEditThemeOfficeXP.
  296. //     This class is used to create the Office 2003 Theme for flat controls.
  297. //===========================================================================
  298. class CXTFlatEditThemeOffice2003 : public CXTFlatEditThemeOfficeXP
  299. {
  300. public:
  301. //-----------------------------------------------------------------------
  302. // Summary:
  303. //     Constructs a CXTFlatEditThemeOffice2003 object.
  304. //-----------------------------------------------------------------------
  305. CXTFlatEditThemeOffice2003();
  306. //--------------------------------------------------------------------
  307. // Summary:
  308. //     This function is called to refresh the colors of
  309. //     the flat controls Office 2003 theme.
  310. //--------------------------------------------------------------------
  311. virtual void RefreshMetrics();
  312. //-----------------------------------------------------------------------
  313. // Summary:
  314. //     This member function is called to render the flat edit control using
  315. //     the specified theme.
  316. // Parameters:
  317. //     pDC    - A CDC pointer that represents the current device
  318. //              context.
  319. //     pEdit  - A pointer to an edit box control.
  320. //     rWindow - Area to render.
  321. //     eState - An int that is used to specify the state of the flat edit box.
  322. //-----------------------------------------------------------------------
  323. virtual void DrawBorders(CDC* pDC, CXTFlatEdit* pEdit, const CRect& rWindow, int eState);
  324. };
  325. /////////////////////////////////////////////////////////////////////////////
  326. #endif // !defined(__XTFLATCONTROLSTHEME_H__)