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

对话框与窗口

开发平台:

Visual C++

  1. // XTPOffice2007Theme.h : interface for the CXTPOffice2007Theme 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(__XTPOFFICE2007THEME_H__)
  22. #define __XTPOFFICE2007THEME_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. class CXTPOffice2007Image;
  28. class CXTPOffice2007Images;
  29. class CXTPOffice2007FrameHook;
  30. #include "XTPOffice2003Theme.h"
  31. //===========================================================================
  32. // Summary:
  33. //     The CXTPOffice2007Theme class is used to enable an Office 2007 style theme for Command Bars
  34. // See Also: CXTPPaintManager::SetTheme
  35. //===========================================================================
  36. class _XTP_EXT_CLASS CXTPOffice2007Theme : public CXTPOffice2003Theme
  37. {
  38. public:
  39. //-----------------------------------------------------------------------
  40. // Summary:
  41. //     Constructs a CXTPOffice2007Theme object.
  42. //-----------------------------------------------------------------------
  43. CXTPOffice2007Theme();
  44. //-----------------------------------------------------------------------
  45. // Summary:
  46. //     Destroys a CXTPOffice2007Theme object, handles cleanup and deallocation
  47. //-----------------------------------------------------------------------
  48. ~CXTPOffice2007Theme();
  49. public:
  50. //-----------------------------------------------------------------------
  51. // Summary:
  52. //     Loads a bitmap image from the specified path.
  53. // Parameters:
  54. //     lpszFileName - The name of the file that contains the bitmaps
  55. //                    to load.
  56. // Remarks:
  57. //     The images are the bitmaps that represent all the visual components
  58. //     of the Ribbon Bar.  For example tab buttons, group buttons, menu buttons,
  59. //     toolbar buttons, option button, toolbar dropdown, etc.
  60. //     The images are loaded using LoadImage and are stored in the m_pImages
  61. //     image collection.
  62. //     Images for the Office 2007 theme can be found in the SourceRibbonRes
  63. //     folder.
  64. // Returns: New CXTPOffice2007Image containing the loaded bitmap.
  65. // See Also: SetImageHandle, m_pImages
  66. //-----------------------------------------------------------------------
  67. CXTPOffice2007Image* LoadImage(LPCTSTR lpszFileName);
  68. //-----------------------------------------------------------------------
  69. // Summary:
  70. //     Specifies the resource that contains the bitmaps to be loaded for the
  71. //     theme.  This allows images to be loaded from something other than bitmap files.
  72. // Parameters:
  73. //     hResource - Handle to a visual style dll file handle. Or
  74. //                 some other resource that contains the images
  75. //                 to load for the theme.
  76. //     lpszIniFileName - String identifier of ini file with color specifications
  77. // Remarks:
  78. //     The images are the bitmaps that represent all the visual components
  79. //     of the Ribbon Bar.  For example tab buttons, group buttons, menu buttons,
  80. //     toolbar buttons, option button, toolbar dropdown, etc.
  81. //     The images are loaded using LoadImage and are stored in the m_pImages
  82. //     image collection.
  83. //     Images for the Office 2007 theme can be found in the SourceRibbonRes
  84. //     folder.
  85. // Example:
  86. //     <code>((CXTPOffice2007Theme*)XTPPaintManager())->SetImageHandle(XTPSkinManager()->GetResourceFile()->GetModuleHandle());</code>
  87. // See Also: LoadImage, m_pImages
  88. //-----------------------------------------------------------------------
  89. void SetImageHandle(HMODULE hResource, LPCTSTR lpszIniFileName);
  90. //-----------------------------------------------------------------------
  91. // Summary:
  92. //     Retrieves height of caption
  93. //-----------------------------------------------------------------------
  94. int GetFrameCaptionHeight() const;
  95. //-----------------------------------------------------------------------
  96. // Summary:
  97. //     Retrieves ribbon caption height
  98. //-----------------------------------------------------------------------
  99. int GetRibbonCaptionHeight() const;
  100. protected:
  101. //-----------------------------------------------------------------------
  102. // Summary:
  103. //     This method is called to refresh the visual metrics of the manager.
  104. //-----------------------------------------------------------------------
  105. virtual void RefreshMetrics();
  106. //-----------------------------------------------------------------------
  107. // Summary:
  108. //     Retrieves the base theme of the manager.
  109. // Returns:
  110. //     Returns the base theme.
  111. //-----------------------------------------------------------------------
  112. XTPPaintTheme BaseTheme() { return xtpThemeOffice2007; }
  113. //-----------------------------------------------------------------------
  114. // Summary:
  115. //     This method is called to fill a status bar.
  116. // Parameters:
  117. //     pDC  - Pointer to a valid device context
  118. //     pBar - Points to a CXTPStatusBar object
  119. //-----------------------------------------------------------------------
  120. virtual void FillStatusBar(CDC* pDC, CXTPStatusBar* pBar);
  121. virtual void FillMessageBar(CDC* pDC, CXTPMessageBar* pBar);
  122. virtual void DrawMessageBarButton(CDC* pDC, CXTPMessageBarButton* pButton);
  123. //-----------------------------------------------------------------------
  124. // Summary:
  125. //     This method is called to draw the status bar's gripper.
  126. // Parameters:
  127. //     pDC      - Pointer to a valid device context
  128. //     rcClient - Client rectangle of the status bar.
  129. //-----------------------------------------------------------------------
  130. virtual void DrawStatusBarGripper(CDC* pDC, CRect rcClient);
  131. //-----------------------------------------------------------------------
  132. // Summary:
  133. //     This method is called to draw frame of single cell of status bar.
  134. // Parameters:
  135. //     pDC - Points to a valid device context.
  136. //     rc - CRect object specifying size of area.
  137. //     pPane - The status bar pane need to draw
  138. //     bGripperPane - TRUE if pane is last cell of status bar
  139. //-----------------------------------------------------------------------
  140. virtual void DrawStatusBarPaneBorder(CDC* pDC, CRect rc, CXTPStatusBarPane* pPane, BOOL bGripperPane);
  141. public:
  142. //-----------------------------------------------------------------------
  143. // Summary:
  144. //     This method is called to draw frame if Ribbon was found
  145. // Parameters:
  146. //      pDC - Pointer to device context
  147. //      pFrameHook - CXTPOffice2007FrameHook hook object
  148. //-----------------------------------------------------------------------
  149. virtual void DrawRibbonFrame(CDC* pDC, CXTPOffice2007FrameHook* pFrameHook);
  150. //-----------------------------------------------------------------------
  151. // Summary:
  152. //     This method is called to create window region
  153. // Parameters:
  154. //      pFrameHook - CXTPOffice2007FrameHook hook object
  155. //      sz - Window size
  156. // Returns: Region of window to be set
  157. //-----------------------------------------------------------------------
  158. virtual HRGN CalcRibbonFrameRegion(CXTPOffice2007FrameHook* pFrameHook, CSize sz);
  159. //-----------------------------------------------------------------------
  160. // Summary:
  161. //     This method is called to draw caption button
  162. // Parameters:
  163. //      pDC - Pointer to device context
  164. //      rc - Bounding rectangle of the button
  165. //      nId - Identifier of the button
  166. //      bSelected - TURE if button is highlighted
  167. //      bPressed -  TURE if button is pressed
  168. //      bActive - TURE if frame is active
  169. //-----------------------------------------------------------------------
  170. virtual void DrawRibbonFrameCaptionButton(CDC* pDC, CRect rc, int nId, BOOL bSelected, BOOL bPressed, BOOL bActive);
  171. //-----------------------------------------------------------------------
  172. // Summary:
  173. //     This method is called to get CXTPOffice2007Images pointer
  174. //-----------------------------------------------------------------------
  175. CXTPOffice2007Images* GetImages() const;
  176. //-----------------------------------------------------------------------
  177. // Summary:
  178. //     Call this method to set images for theme
  179. // Parameters:
  180. //     pImages - new CXTPOffice2007Images to bet set
  181. // See Also: GetImages
  182. //-----------------------------------------------------------------------
  183. void SetImages(CXTPOffice2007Images* pImages);
  184. //-----------------------------------------------------------------------
  185. // Summary:
  186. //     This method retrieves buttons text color
  187. // Parameters:
  188. //     bSelected   - TRUE if the control is selected.
  189. //     bPressed    - TRUE if the control is pushed.
  190. //     bEnabled    - TRUE if the control is enabled.
  191. //     bChecked    - TRUE if the control is checked.
  192. //     bPopuped    - TRUE if the control is popuped.
  193. //     barType     - Parent's bar type
  194. //     barPosition - Parent's bar position.
  195. //-----------------------------------------------------------------------
  196. virtual COLORREF GetRectangleTextColor(BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition);
  197. //-----------------------------------------------------------------------
  198. // Summary:
  199. //     Draws workspace space
  200. // Parameters:
  201. //     pDC - Pointer to device context
  202. //     rc - Bounding rectangle
  203. //     rcExclude - Excluded rectangle
  204. //-----------------------------------------------------------------------
  205. void FillWorkspace(CDC* pDC, CRect rc, CRect rcExclude);
  206. protected:
  207. //-----------------------------------------------------------------------
  208. // Summary:
  209. //     This method is called to draw frame caption text
  210. // Parameters:
  211. //     pDC - Pointer to device context
  212. //     rcCaptionText - Bounding rectangle of window text
  213. //     pSite - Frame to draw
  214. //     bActive - TRUE if frame is active
  215. //-----------------------------------------------------------------------
  216. virtual void DrawCaptionText(CDC* pDC, CRect rcCaptionText, CWnd* pSite, BOOL bActive);
  217. protected:
  218. //-----------------------------------------------------------------------
  219. // Summary:
  220. //     Determines if images is available
  221. // Returns:
  222. //     TRUE if images exist in application
  223. //-----------------------------------------------------------------------
  224. BOOL IsImagesAvailable();
  225. //-----------------------------------------------------------------------
  226. // Summary:
  227. //     Retrieves frame small icon
  228. // Parameters:
  229. //     pFrame - Window to retrieve icon
  230. // See Also: GetFrameLargeIcon
  231. //-----------------------------------------------------------------------
  232. HICON GetFrameSmallIcon(CWnd* pFrame);
  233. //-----------------------------------------------------------------------
  234. // Summary:
  235. //     Retrieves frame large icon
  236. // Parameters:
  237. //     pFrame - Window to retrieve icon
  238. // See Also: GetFrameLargeIcon
  239. //-----------------------------------------------------------------------
  240. HICON GetFrameLargeIcon(CWnd* pFrame);
  241. public:
  242. BOOL m_bFrameStatusBar; // TRUE if status bar used to draw.
  243. CXTPPaintManagerFont m_fontFrameCaption;    // Font used to draw text in the frame caption
  244. protected:
  245. int m_nRibbonCaptionHeight;         // Ribbon caption height
  246. int m_nFrameCaptionHeight;          // Frame caption
  247. protected:
  248. //{{AFX_CODEJOCK_PRIVATE
  249. CXTPOffice2007Images* m_pImages;
  250. COLORREF m_clrFrameBorderActive0;
  251. COLORREF m_clrFrameBorderActive1;
  252. COLORREF m_clrFrameBorderActive2;
  253. COLORREF m_clrFrameBorderActive3;
  254. COLORREF m_clrFrameBorderInactive0;
  255. COLORREF m_clrFrameBorderInactive1;
  256. COLORREF m_clrFrameBorderInactive2;
  257. COLORREF m_clrFrameBorderInactive3;
  258. COLORREF m_clrFrameCaptionTextActive;
  259. COLORREF m_clrFrameCaptionTextInActive;
  260. COLORREF m_clrFrameCaptionTextActiveTitle;
  261. COLORREF m_clrMenuBarText;
  262. COLORREF m_clrStatusBarShadow;
  263. CXTPPaintManagerColorGradient m_clrStatusBarTop;
  264. CXTPPaintManagerColorGradient m_clrStatusBarBottom;
  265. COLORREF m_clrWorkspaceClientTop;
  266. COLORREF m_clrWorkspaceClientMiddle;
  267. COLORREF m_clrWorkspaceClientBottom;
  268. CXTPPaintManagerColorGradient m_clrMessageBar;
  269. COLORREF m_clrMessageBarFrame;
  270. COLORREF m_clrMessageBarFace;
  271. //}}AFX_CODEJOCK_PRIVATE
  272. };
  273. AFX_INLINE int CXTPOffice2007Theme::GetFrameCaptionHeight() const {
  274. return m_nFrameCaptionHeight;
  275. }
  276. AFX_INLINE int CXTPOffice2007Theme::GetRibbonCaptionHeight() const {
  277. return m_nRibbonCaptionHeight;
  278. }
  279. #endif // #if !defined(__XTPOFFICE2007THEME_H__)