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

对话框与窗口

开发平台:

Visual C++

  1. // XTPOffice2003Theme.h : interface for the CXTPOffice2003Theme class.
  2. //
  3. // This file is a part of the XTREME COMMANDBARS 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(__XTPOFFICE2003THEME_H__)
  22. #define __XTPOFFICE2003THEME_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "XTPPaintManager.h"
  28. //===========================================================================
  29. // Summary:
  30. //     The CXTPOffice2003Theme class is used to enable an Office 2003 style theme for Command Bars
  31. // See Also: CXTPPaintManager::SetTheme
  32. //===========================================================================
  33. class _XTP_EXT_CLASS CXTPOffice2003Theme : public CXTPOfficeTheme
  34. {
  35. public:
  36. //-----------------------------------------------------------------------
  37. // Summary:
  38. //     Constructs a CXTPOffice2003Theme object.
  39. //-----------------------------------------------------------------------
  40. CXTPOffice2003Theme();
  41. //-----------------------------------------------------------------------
  42. // Summary:
  43. //     Destroys a CXTPOffice2003Theme object, handles cleanup and deallocation
  44. //-----------------------------------------------------------------------
  45. virtual ~CXTPOffice2003Theme();
  46. //-----------------------------------------------------------------------
  47. // Summary:
  48. //     Loads bitmap specified by nIDResource and converts its colors.
  49. // Parameters:
  50. //     nIDResource - Specifies bitmap resource ID.
  51. // Returns:
  52. //     Handle to bitmap with loaded bitmap.
  53. //-----------------------------------------------------------------------
  54. static HBITMAP AFX_CDECL GetModernBitmap(UINT nIDResource);
  55. //-----------------------------------------------------------------------
  56. // Summary:
  57. //     Loads bitmap specified by nIDResource and adds it to ImageManager.
  58. // Parameters:
  59. //     nIDResource - Specifies bitmap resource ID.
  60. //     pCommands - Pointer to an array of IDs.
  61. //     nCount - Number of elements in the array pointed to by lpIDArray.
  62. //     szIcon - Size of the icons.
  63. // Returns:
  64. //     Returns TRUE if successful, FALSE otherwise
  65. // See also: GetModernBitmap, CXTPImageManager
  66. //-----------------------------------------------------------------------
  67. static BOOL AFX_CDECL LoadModernToolbarIcons(UINT nIDResource);
  68. static BOOL AFX_CDECL LoadModernToolbarIcons(UINT nIDResource, UINT* pCommands, int nCount, CSize szIcon = CSize(16, 15)); // <combine CXTPOffice2003Theme::LoadModernToolbarIcons@UINT>
  69. //-----------------------------------------------------------------------
  70. // Summary:
  71. //     This method creates a new clipping region that consists of the existing clipping region minus the corners rectangles.
  72. // Parameters:
  73. //     pDC - Pointer to a valid device context.
  74. //     rc - CRect object specifying size of area.
  75. //-----------------------------------------------------------------------
  76. void ExcludeCorners(CDC* pDC, CRect rc);
  77. protected:
  78. //-----------------------------------------------------------------------
  79. // Summary:
  80. //     This method is called to refresh the visual metrics of the manager.
  81. //-----------------------------------------------------------------------
  82. virtual void RefreshMetrics();
  83. //-----------------------------------------------------------------------
  84. // Summary:
  85. //     This method is called to draw popup bar right gripper.
  86. // Parameters:
  87. //     pDC       - Points to a valid device context.
  88. //     xPos         - Specifies the logical x-coordinate of the upper-left corner of the rectangle.
  89. //     yPos         - Specifies the logical y-coordinate of the upper-left corner of the destination rectangle.
  90. //     cx        - Specifies the width of the rectangle.
  91. //     cy        - Specifies the height of the rectangle.
  92. //     bExpanded - TRUE if expanded.gripper.
  93. //-----------------------------------------------------------------------
  94. virtual void DrawPopupBarGripper(CDC* pDC, int xPos, int yPos, int cx, int cy, BOOL bExpanded = FALSE);
  95. //-----------------------------------------------------------------------
  96. // Summary:
  97. //     This method is called to fill a dockbar.
  98. // Parameters:
  99. //     pDC  - Pointer to a valid device context
  100. //     pBar - Points to a CXTPDockBar object
  101. //-----------------------------------------------------------------------
  102. virtual void FillDockBar(CDC* pDC, CXTPDockBar* pBar);
  103. virtual void FillMessageBar(CDC* pDC, CXTPMessageBar* pBar);
  104. //-----------------------------------------------------------------------
  105. // Summary:
  106. //     This method is called to fill the command bar's face.
  107. // Parameters:
  108. //     pDC  - Pointer to a valid device context
  109. //     pBar - Points to a CXTPCommandBar object to draw.
  110. //-----------------------------------------------------------------------
  111. virtual void FillCommandBarEntry(CDC* pDC, CXTPCommandBar* pBar);
  112. //-----------------------------------------------------------------------
  113. // Summary:
  114. //     This method is called to draw a command bar's separator.
  115. // Parameters:
  116. //     pDC      - Pointer to a valid device context
  117. //     pBar     - Points to a CXTPCommandBar object
  118. //     pControl - Points to a CXTPControl object
  119. //     bDraw    - TRUE to draw; FALSE to retrieve the size of the separator.
  120. // Returns:
  121. //     This method is called to draw a command bar's separator.
  122. //-----------------------------------------------------------------------
  123. virtual CSize DrawCommandBarSeparator(CDC* pDC, CXTPCommandBar* pBar, CXTPControl* pControl, BOOL bDraw = TRUE);
  124. //-----------------------------------------------------------------------
  125. // Summary:
  126. //     This method is called to draw the command bar's gripper.
  127. // Parameters:
  128. //     pDC   - Pointer to a valid device context
  129. //     pBar  - Points to a CXTPCommandBar object
  130. //     bDraw - TRUE to draw; FALSE to retrieve the size of the gripper.
  131. // Returns:
  132. //     Size of the gripper.
  133. //-----------------------------------------------------------------------
  134. virtual CSize DrawCommandBarGripper(CDC* pDC, CXTPCommandBar* pBar, BOOL bDraw = TRUE);
  135. //-----------------------------------------------------------------------
  136. // Summary:
  137. //     This method is called to fill the control's face
  138. // Parameters:
  139. //     pDC         - Pointer to a valid device context
  140. //     rc          - Rectangle to draw.
  141. //     bSelected   - TRUE if the control is selected.
  142. //     bPressed    - TRUE if the control is pushed.
  143. //     bEnabled    - TRUE if the control is enabled.
  144. //     bChecked    - TRUE if the control is checked.
  145. //     bPopuped    - TRUE if the control is popuped.
  146. //     barType     - Parent's bar type
  147. //     barPosition - Parent's bar position.
  148. //-----------------------------------------------------------------------
  149. virtual void DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition);
  150. //-----------------------------------------------------------------------
  151. // Summary:
  152. //     This method is called to draw the specified controls.
  153. // Parameters:
  154. //     pDC         - Pointer to a valid device context
  155. //     controlType - Special control enumerator.
  156. //     pButton     - Points to a CXTPControl object to draw.
  157. //     pBar        - Parent CXTPCommandBar object.
  158. //     bDraw       - TRUE to draw; FALSE to retrieve the size of the
  159. //                   control.
  160. //     lpParam     - Specified parameter.
  161. // Returns:
  162. //     Size of the control.
  163. // See Also: XTPSpecialControl
  164. //-----------------------------------------------------------------------
  165. virtual CSize DrawSpecialControl(CDC* pDC, XTPSpecialControl controlType, CXTPControl* pButton, CXTPCommandBar* pBar, BOOL bDraw, LPVOID lpParam);
  166. //-----------------------------------------------------------------------
  167. // Summary:
  168. //     This method is called to retrieve the command bar's borders.
  169. // Parameters:
  170. //     pBar - Points to a CXTPCommandBar object that the borders need to get.
  171. // Returns:
  172. //     Borders of the command bar.
  173. //-----------------------------------------------------------------------
  174. virtual CRect GetCommandBarBorders(CXTPCommandBar* pBar);
  175. //-----------------------------------------------------------------------
  176. // Summary:
  177. //     This method is called to draw a tear-off gripper of Popup Bar.
  178. // Parameters:
  179. //     pDC       - Pointer to a valid device context
  180. //     rcGripper - Bounding rectangle of the gripper.
  181. //     bSelected - True if the gripper is selected.
  182. //     bDraw     - TRUE to draw; FALSE to retrieve the size of the gripper.
  183. // Returns:
  184. //     Size of the gripper.
  185. //-----------------------------------------------------------------------
  186. virtual CSize DrawTearOffGripper(CDC* pDC, CRect rcGripper, BOOL bSelected, BOOL bDraw);
  187. //-----------------------------------------------------------------------
  188. // Summary:
  189. //     This method is called to draw the status bar's gripper.
  190. // Parameters:
  191. //     pDC      - Pointer to a valid device context
  192. //     rcClient - Client rectangle of the status bar.
  193. //-----------------------------------------------------------------------
  194. virtual void DrawStatusBarGripper(CDC* pDC, CRect rcClient);
  195. //-----------------------------------------------------------------------
  196. // Summary:
  197. //     This method is called to draw frame of single cell of status bar.
  198. // Parameters:
  199. //     pDC - Points to a valid device context.
  200. //     rc - CRect object specifying size of area.
  201. //     pPane - The status bar pane need to draw
  202. //     bGripperPane - TRUE if pane is last cell of status bar
  203. //-----------------------------------------------------------------------
  204. virtual void DrawStatusBarPaneBorder(CDC* pDC, CRect rc, CXTPStatusBarPane* pPane, BOOL bGripperPane);
  205. //-----------------------------------------------------------------------
  206. // Summary:
  207. //     Call this member to draw gripper of dialog bar.
  208. // Parameters:
  209. //     pDC   - Points to a valid device context.
  210. //     pBar  - Dialog Bar pointer
  211. //     bDraw - TRUE to draw gripper, FALSE to calculate size.
  212. // Returns:
  213. //     Size of gripper to be drawn.
  214. //-----------------------------------------------------------------------
  215. virtual CSize DrawDialogBarGripper(CDC* pDC, CXTPDialogBar* pBar, BOOL bDraw);
  216. //-----------------------------------------------------------------------
  217. // Summary:
  218. //     Retrieves the base theme of the manager.
  219. // Returns:
  220. //     Returns the base theme.
  221. //-----------------------------------------------------------------------
  222. XTPPaintTheme BaseTheme() { return xtpThemeOffice2003; }
  223. //-----------------------------------------------------------------------
  224. // Summary:
  225. //     Generates expand bitmap used for CXTPPopupBar.
  226. //-----------------------------------------------------------------------
  227. void CreateGradientCircle();
  228. //-----------------------------------------------------------------------
  229. // Summary:
  230. //     Returns TRUE if Floating Toolbar drawn with gradient background
  231. // Parameters:
  232. //     pBar - Toolbar to check
  233. // Returns:
  234. //     TRUE if Toolbar has gradient background
  235. //-----------------------------------------------------------------------
  236. virtual BOOL HasFloatingBarGradientEntry(CXTPCommandBar* pBar);
  237. protected:
  238. //{{AFX_CODEJOCK_PRIVATE
  239. void DrawExpandSymbols(CDC* pDC, BOOL bVertical, CRect rc, BOOL bHiddenExists, COLORREF clr);
  240. void RectangleEx(CDC* pDC, CRect rc, int nColorBorder, BOOL bHoriz, CXTPPaintManagerColorGradient& color);
  241. //}}AFX_CODEJOCK_PRIVATE
  242. public:
  243. CXTPPaintManagerColorGradient m_clrDockBar;             // Color of dockbar face
  244. CXTPPaintManagerColorGradient m_clrCommandBar;          // Color of commandbar face
  245. CXTPPaintManagerColorGradient m_clrToolbarExpand;       // Toolbar Expand button color.
  246. CXTPPaintManagerColorGradient m_clrMenuExpand;          // MenuBar Expand button color.
  247. CXTPPaintManagerColorGradient m_clrMenuExpandedGripper; // Color of popup bar gripper
  248. CXTPPaintManagerColorGradient m_clrMenuGripper;
  249. CXTPPaintManagerColorGradient m_clrPopupControl;        // color of popup control
  250. CXTPPaintManagerColor m_clrToolbarShadow;    // Toolbar bottom shadow color
  251. CXTPPaintManagerColor m_clrStatusPane;       // Color of status bar cell..
  252. CXTPPaintManagerColor m_clrTearOffGripper;  // TearOff gripper color
  253. BOOL     m_bLunaTheme;                       // TRUE if luna theme is active.
  254. BOOL     m_bPlainSeparators;                 // TRUE to draw plain separators
  255. CImageList m_ilGradientCircle;               // Gradient circle holder.
  256. CXTPPaintManagerColorGradient m_grcLunaChecked;         // Background color of checked button
  257. CXTPPaintManagerColorGradient m_grcLunaPushed;          // Background color of pushed button
  258. CXTPPaintManagerColorGradient m_grcLunaSelected;        // Background color of selected button
  259. };
  260. //===========================================================================
  261. // Summary:
  262. //     The CXTPWhidbeyTheme class is used to enable a Visual Studio 2005 style theme for Command Bars
  263. // See Also: CXTPPaintManager::SetTheme
  264. //===========================================================================
  265. class _XTP_EXT_CLASS CXTPWhidbeyTheme : public CXTPOffice2003Theme
  266. {
  267. public:
  268. //-----------------------------------------------------------------------
  269. // Summary:
  270. //     Constructs a CXTPWhidbeyTheme object.
  271. //-----------------------------------------------------------------------
  272. CXTPWhidbeyTheme();
  273. //-----------------------------------------------------------------------
  274. // Summary:
  275. //     Destroys a CXTPWhidbeyTheme object, handles cleanup and deallocation
  276. //-----------------------------------------------------------------------
  277. virtual ~CXTPWhidbeyTheme();
  278. //-----------------------------------------------------------------------
  279. // Summary:
  280. //     This method is called to refresh the visual metrics of the manager.
  281. //-----------------------------------------------------------------------
  282. void RefreshMetrics();
  283. public:
  284. //-----------------------------------------------------------------------
  285. // Summary:
  286. //     Retrieves the base theme of the manager.
  287. // Returns:
  288. //     Returns the base theme.
  289. //-----------------------------------------------------------------------
  290. XTPPaintTheme BaseTheme() { return xtpThemeWhidbey; }
  291. };
  292. //===========================================================================
  293. // Summary:
  294. //     The CXTPVisualStudio2008Theme class is used to enable a Visual Studio 2008 style theme for Command Bars
  295. // See Also: CXTPPaintManager::SetTheme
  296. //===========================================================================
  297. class _XTP_EXT_CLASS CXTPVisualStudio2008Theme : public CXTPWhidbeyTheme
  298. {
  299. public:
  300. //-----------------------------------------------------------------------
  301. // Summary:
  302. //     Constructs a CXTPVisualStudio2008Theme object.
  303. //-----------------------------------------------------------------------
  304. CXTPVisualStudio2008Theme();
  305. //-----------------------------------------------------------------------
  306. // Summary:
  307. //     Destroys a CXTPVisualStudio2008Theme object, handles cleanup and deallocation
  308. //-----------------------------------------------------------------------
  309. virtual ~CXTPVisualStudio2008Theme();
  310. //-----------------------------------------------------------------------
  311. // Summary:
  312. //     This method is called to refresh the visual metrics of the manager.
  313. //-----------------------------------------------------------------------
  314. void RefreshMetrics();
  315. public:
  316. //-----------------------------------------------------------------------
  317. // Summary:
  318. //     This method is called to retrieve the command bar's borders.
  319. // Parameters:
  320. //     pBar - Points to a CXTPCommandBar object that the borders need to get.
  321. // Returns:
  322. //     Borders of the command bar.
  323. //-----------------------------------------------------------------------
  324. virtual CRect GetCommandBarBorders(CXTPCommandBar* pBar);
  325. virtual void DrawPopupBarGripper(CDC* pDC, int x, int y, int cx, int cy, BOOL bExpanded);
  326. virtual void DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition);
  327. virtual COLORREF GetRectangleTextColor(BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition);
  328. virtual void AdjustExcludeRect(CRect& rc, CXTPControl* pControl, BOOL bVertical);
  329. virtual CSize DrawCommandBarSeparator(CDC* pDC, CXTPCommandBar* pBar, CXTPControl* pControl, BOOL bDraw);
  330. protected:
  331. void AlpaPixel(CDC* pDC, int x, int y, COLORREF clr, int nAlpha);
  332. public:
  333. //-----------------------------------------------------------------------
  334. // Summary:
  335. //     Retrieves the base theme of the manager.
  336. // Returns:
  337. //     Returns the base theme.
  338. //-----------------------------------------------------------------------
  339. XTPPaintTheme BaseTheme() { return xtpThemeVisualStudio2008; }
  340. public:
  341. CXTPPaintManagerColorGradient m_clrMenuSelection;
  342. CXTPPaintManagerColor m_clrMenuSelectionBorder;
  343. CXTPPaintManagerColor m_clrMenuSelectionText;
  344. };
  345. #endif // #if !defined(__XTPOFFICE2003THEME_H__)