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

对话框与窗口

开发平台:

Visual C++

  1. // XTPDockingPanePaintManager.h : interface for the CXTPDockingPanePaintManager class.
  2. //
  3. // This file is a part of the XTREME DOCKINGPANE 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(__XTPDOCKINGPANEPAINTMANAGER_H__)
  22. #define __XTPDOCKINGPANEPAINTMANAGER_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "XTPDockingPaneDefines.h"
  28. #include "Common/XTPWinThemeWrapper.h"
  29. #include "Common/XTPColorManager.h"
  30. class CXTPDockingPaneTabsArray;
  31. class CXTPDockingPaneTabbedContainer;
  32. class CXTPDockingPaneAutoHidePanel;
  33. class CXTPTabPaintManager;
  34. class CXTPDockingPaneMiniWnd;
  35. class CXTPDockingPaneSplitterWnd;
  36. class CXTPDockingPaneCaptionButtons;
  37. class CXTPDockingPaneSidePanel;
  38. //-----------------------------------------------------------------------
  39. // Summary:
  40. //     Enumeration of the pin button state
  41. // See Also:
  42. //     CXTPDockingPaneCaptionButton::GetState,
  43. //     CXTPDockingPaneCaptionButton::SetState
  44. //
  45. // <KEYWORDS xtpPanePinVisible, xtpPanePinPushed>
  46. //-----------------------------------------------------------------------
  47. enum XTPDockingPanePinState
  48. {
  49. xtpPanePinVisible = 1, // Pin button is visible.
  50. xtpPanePinPushed = 2   // Pin button is pushed.
  51. };
  52. //-----------------------------------------------------------------------
  53. // Summary:
  54. //     Enumeration of the splitter styles
  55. // Example:
  56. //     m_paneManager.GetPaintManager()->SetSplitterStyle(xtpPaneSplitterSoft3D + xtpPaneSplitterGripperOffice2003);
  57. // See Also:
  58. //     CXTPDockingPanePaintManager::SetSplitterStyle
  59. //
  60. // <KEYWORDS xtpPaneSplitterFlat, xtpPaneSplitter3D, xtpPaneSplitterSoft3D, xtpPaneSplitterGripperOfficeXP, xtpPaneSplitterGripperOffice2003>
  61. //-----------------------------------------------------------------------
  62. enum XTPDockingPaneSplitterStyle
  63. {
  64. xtpPaneSplitterFlat     = 0,            // Flat splitter style
  65. xtpPaneSplitter3D       = 1,            // 3D splitter style
  66. xtpPaneSplitterSoft3D   = 2,            // Soft splitter style
  67. xtpPaneSplitterGradient = 4,            // Gradient splitter style
  68. xtpPaneSplitterGradientVert = 8,            // Gradient splitter style
  69. xtpPaneSplitterGripperOfficeXP = 0x100,     // Splitter has OfficeXP gripper
  70. xtpPaneSplitterGripperOffice2003 = 0x200    // Splitter has Office2003 gripper
  71. };
  72. //-----------------------------------------------------------------------
  73. // Summary:
  74. //     Enumeration of the caption button styles
  75. // Example:
  76. //     m_paneManager.GetPaintManager()->SetCaptionButtonStyle(xtpPaneCaptionButtonThemedExplorerBar);
  77. // See Also:
  78. //     CXTPDockingPanePaintManager::SetCaptionButtonStyle
  79. //-----------------------------------------------------------------------
  80. enum XTPDockingPaneCaptionButtonStyle
  81. {
  82. xtpPaneCaptionButtonDefault,            // Default caption button style
  83. xtpPaneCaptionButtonOffice,             // Office XP caption button style
  84. xtpPaneCaptionButtonOffice2003,         // Office 2003 caption button style
  85. xtpPaneCaptionButtonThemedExplorerBar,  // Explorer button style
  86. xtpPaneCaptionButtonThemedButton,       // Windows XP Button style
  87. xtpPaneCaptionButtonThemedToolBar,      // Windows XP Toolbar style
  88. xtpPaneCaptionButtonThemedToolWindow,   // Window XP Tool Window style
  89. };
  90. //===========================================================================
  91. // Summary:
  92. //     CXTPDockingPaneCaptionButton is a stand alone internal class.
  93. //===========================================================================
  94. class _XTP_EXT_CLASS CXTPDockingPaneCaptionButton
  95. {
  96. public:
  97. //-----------------------------------------------------------------------
  98. // Summary:
  99. //     Constructs a CXTPDockingPaneCaptionButton object
  100. // Parameters:
  101. //     nID   - If of the caption button.
  102. //     pPane - Pane that the caption button controls.
  103. //-----------------------------------------------------------------------
  104. CXTPDockingPaneCaptionButton (int nID, CXTPDockingPaneBase* pPane)
  105. {
  106. m_nID = nID; m_pPane = pPane;
  107. m_bPressed = m_bSelected = FALSE;
  108. m_dwState = 0;
  109. m_rcButton.SetRectEmpty();
  110. }
  111. //-----------------------------------------------------------------------
  112. // Summary:
  113. //     Call this member to set the button's rectangle.
  114. // Parameters:
  115. //     rc - Button's rectangle.
  116. //-----------------------------------------------------------------------
  117. void SetRect (CRect rc);
  118. //-----------------------------------------------------------------------
  119. // Summary:
  120. //     Call this member to draw a pin button.
  121. // Parameters:
  122. //     pDC     - Pointer to the device context in which to draw.
  123. //     pt      - Center point.
  124. //     bPinned - TRUE if the button is pinned.
  125. //-----------------------------------------------------------------------
  126. static void AFX_CDECL DrawPinnButton(CDC* pDC, CPoint pt, BOOL bPinned);
  127. //-----------------------------------------------------------------------
  128. // Summary:
  129. //     Call this member to draw the maximizerestore button.
  130. // Parameters:
  131. //     pDC     - Pointer to the device context in which to draw.
  132. //     pt      - Center point.
  133. //     bMaximize - TRUE if the button is to be drawn maximized, FALSE to
  134. //                 draw restore button.
  135. //     clr - Color of button.
  136. //-----------------------------------------------------------------------
  137. static void AFX_CDECL DrawMaximizeRestoreButton(CDC* pDC, CPoint pt, BOOL bMaximize, COLORREF clr);
  138. //-----------------------------------------------------------------------
  139. // Summary:
  140. //     Call this method to click button.
  141. // Parameters:
  142. //     pWnd    - Parent window of button.
  143. //     pt      - Initial mouse position.
  144. //     bClient - TRUE if <i>pt</i> belongs client area of window.
  145. //-----------------------------------------------------------------------
  146. DWORD Click (CWnd* pWnd, CPoint pt, BOOL bClient = TRUE);
  147. //-----------------------------------------------------------------------
  148. // Summary:
  149. //     Call this member to get the bounding rectangle
  150. // Returns:
  151. //     A CRect object
  152. //-----------------------------------------------------------------------
  153. CRect GetRect() { return m_rcButton;}
  154. //-----------------------------------------------------------------------
  155. // Summary:
  156. //     Call this member to determine the state of the caption button.
  157. //     This will tell you if the pin caption button is visible or
  158. //     if it is pushed.
  159. // Returns:
  160. //     1 if the the button is visible, 2 if it is pushed, 3 if it
  161. //     is both visible and pushed.
  162. // See Also: XTPDockingPanePinState
  163. //-----------------------------------------------------------------------
  164. DWORD GetState() const {
  165. return m_dwState;
  166. }
  167. //-----------------------------------------------------------------------
  168. // Summary:
  169. //     Call this member to set the state of the pin caption button.
  170. // Parameters:
  171. //     dwState - XTPDockingPanePinState of pin button.
  172. // See Also: XTPDockingPanePinState
  173. //-----------------------------------------------------------------------
  174. void SetState(DWORD dwState) {
  175. m_dwState = dwState;
  176. }
  177. //-----------------------------------------------------------------------
  178. // Summary:
  179. //     Retrieves button identifier
  180. // Returns:
  181. //     Button identifier. Standard values are
  182. //     * <b>XTP_IDS_DOCKINGPANE_CLOSE</b> Close button
  183. //     * <b>XTP_IDS_DOCKINGPANE_AUTOHIDE</b> Auto-hide button
  184. //-----------------------------------------------------------------------
  185. int GetID() const {
  186. return m_nID;
  187. }
  188. //-----------------------------------------------------------------------
  189. // Summary:
  190. //     Call this member to retrieve the pane that the pin button controls.
  191. // Returns:
  192. //     Pane that the pin button controls.
  193. //-----------------------------------------------------------------------
  194. CXTPDockingPaneBase* GetPane() const {
  195. return m_pPane;
  196. }
  197. //-----------------------------------------------------------------------
  198. // Summary:
  199. //     Call this member to determine if the point belongs to button.
  200. // Parameters:
  201. //     pt - Point to test.
  202. // Returns:
  203. //     TRUE if point belongs to the button; otherwise returns FALSE
  204. //-----------------------------------------------------------------------
  205. BOOL PtInRect (POINT pt) const {return m_rcButton.PtInRect (pt) != 0; }
  206. //-----------------------------------------------------------------------
  207. // Summary:
  208. //     Call this member to refresh styles of the button.
  209. // Parameters:
  210. //     pt - Mouse cursor pointer.
  211. //-----------------------------------------------------------------------
  212. BOOL CheckForMouseOver (CPoint pt);
  213. //-----------------------------------------------------------------------
  214. // Summary:
  215. //     Call this method to redraw button
  216. //-----------------------------------------------------------------------
  217. void InvalidateRect();
  218. //-----------------------------------------------------------------------
  219. // Summary:
  220. //     Call this member to determine if the button is pushed.
  221. // Returns:
  222. //     TRUE is the button is pushed, FALSE otherwise.
  223. //-----------------------------------------------------------------------
  224. BOOL IsPressed() const {
  225. return m_bPressed;
  226. }
  227. //-----------------------------------------------------------------------
  228. // Summary:
  229. //     Call this member to determine if the button mouse hover the button
  230. // Returns:
  231. //     TRUE if mouse hover the button.
  232. //-----------------------------------------------------------------------
  233. BOOL IsSelected() const {
  234. return m_bSelected;
  235. }
  236. //-----------------------------------------------------------------------
  237. // Summary:
  238. //     Call this member to determine if the pin caption button is visible.
  239. // Returns:
  240. //     TRUE if the pin button is visible, FALSE otherwise.
  241. //-----------------------------------------------------------------------
  242. BOOL IsVisible();
  243. //-----------------------------------------------------------------------
  244. // Summary:
  245. //     Determines if button is enabled
  246. // Returns:
  247. //     TRUE if button is enabled
  248. //-----------------------------------------------------------------------
  249. BOOL IsEnabled() const;
  250. protected:
  251. CRect m_rcButton;             // Bounding rectangle of the button
  252. CXTPDockingPaneBase* m_pPane; // Parent pane
  253. int m_nID;                    // Identifier of the button.
  254. BOOL m_bPressed;              // TRUE if button is pressed by user.
  255. BOOL m_bSelected;             // TRUE if user move mouse cursor inside button rectangle
  256. DWORD m_dwState;              // XTPDockingPanePinState of caption button.
  257. friend class CXTPDockingPaneTabbedContainer;
  258. friend class CXTPDockingPaneMiniWnd;
  259. };
  260. //===========================================================================
  261. // Summary:
  262. //     CXTPDockingPanePaintManager is a stand alone class.
  263. //     Override some virtual functions to get a new visual theme.
  264. //===========================================================================
  265. class _XTP_EXT_CLASS CXTPDockingPanePaintManager : public CXTPCmdTarget
  266. {
  267. protected:
  268. //-----------------------------------------------------------------------
  269. // Summary:
  270. //     Constructs a CXTPDockingPanePaintManager object
  271. //-----------------------------------------------------------------------
  272. CXTPDockingPanePaintManager();
  273. //-----------------------------------------------------------------------
  274. // Summary:
  275. //     Destroys a CXTPDockingPanePaintManager object, handles cleanup
  276. //     and deallocation
  277. //-----------------------------------------------------------------------
  278. virtual ~CXTPDockingPanePaintManager();
  279. public:
  280. //-----------------------------------------------------------------------
  281. // Summary:
  282. //     Override this member function to draw a tabbed container.
  283. // Parameters:
  284. //     dc    - Reference to the device context in which to draw.
  285. //     pPane - Pointer to the tabbed container.
  286. //     rc    - Client rectangle of the tabbed container.
  287. //-----------------------------------------------------------------------
  288. virtual void DrawPane(CDC* pDC, CXTPDockingPaneTabbedContainer* pPane, CRect rc);
  289. virtual void DrawSidePanel(CDC* pDC, CXTPDockingPaneSidePanel* pPane, CRect rc);
  290. virtual CRect GetPaneCaptionRect(const CXTPDockingPaneSidePanel* pPane);
  291. //-----------------------------------------------------------------------
  292. // Summary:
  293. //     Override this member function to draw a caption.
  294. // Parameters:
  295. //     dc - Reference to the device context in which to draw.
  296. //     pPane - Pointer to the tabbed container.
  297. //     rc - Client rectangle of the tabbed container.
  298. //-----------------------------------------------------------------------
  299. virtual void DrawCaption(CDC* pDC, CXTPDockingPaneTabbedContainer* pPane, CRect rc) = 0;
  300. //-----------------------------------------------------------------------
  301. // Summary:
  302. //     Override this member function to draw buttons of tabbed caption.
  303. // Parameters:
  304. //     pDC         - Pointer to a valid device context
  305. //     pButtons    - Collection of buttons to draw.
  306. //     rcCaption   - Caption rectangle
  307. //     clr         - Color of button text.
  308. //     nButtonSize - Size of button
  309. //     nButtonGap  - Distance between buttons.
  310. //     bVertical   - TRUE if caption drawn vertically
  311. //-----------------------------------------------------------------------
  312. virtual void DrawCaptionButtons(CDC* pDC, CXTPDockingPaneCaptionButtons* pButtons, CRect& rcCaption, COLORREF clr, int nButtonSize, int nButtonGap, BOOL bVertical = FALSE);
  313. //-----------------------------------------------------------------------
  314. // Summary:
  315. //     Override this member function to draw button of tabbed caption.
  316. // Parameters:
  317. //     pDC         - Pointer to a valid device context
  318. //     pButton     - Button pointer need to draw.
  319. //     clrButton   - Color of button text.
  320. //-----------------------------------------------------------------------
  321. virtual void DrawCaptionButton(CDC* pDC, CXTPDockingPaneCaptionButton* pButton, COLORREF clrButton);
  322. //-----------------------------------------------------------------------
  323. // Summary:
  324. //     This method is called to refresh the visual metrics of manager.
  325. //-----------------------------------------------------------------------
  326. virtual void RefreshMetrics();
  327. //-----------------------------------------------------------------------
  328. // Summary:
  329. //     Override this member to change the client rectangle of the child
  330. //     docking pane.
  331. // Parameters:
  332. //     pPane  - Pointer to the tabbed container.
  333. //     rect   - Client rectangle to be changed.
  334. //     bApply - TRUE to update tabs inside client area.
  335. //-----------------------------------------------------------------------
  336. virtual void AdjustClientRect(CXTPDockingPaneTabbedContainer* pPane, CRect& rect, BOOL bApply);
  337. //-----------------------------------------------------------------------
  338. // Summary:
  339. //     Override this member to change the caption rectangle of the child
  340. //     docking pane.
  341. // Parameters:
  342. //     pPane - Pointer to a CXTPDockingPaneTabbedContainer object.
  343. //     rc    - Caption rectangle to be changed.
  344. //-----------------------------------------------------------------------
  345. virtual void AdjustCaptionRect(const CXTPDockingPaneTabbedContainer* pPane, CRect& rc);
  346. virtual void AdjustClientRect(CXTPDockingPaneSidePanel* pPane, CRect& rect);
  347. virtual void AdjustCaptionRect(const CXTPDockingPaneSidePanel* pPane, CRect& rc);
  348. //-----------------------------------------------------------------------
  349. // Summary:
  350. //     Call this method to get caption gripper for tabbed container
  351. // Parameters:
  352. //     pPane - Tabbed container to test
  353. // Returns: Bounding rectangle of gripper to set size cursor
  354. //-----------------------------------------------------------------------
  355. virtual CRect GetCaptionGripperRect(const CXTPDockingPaneTabbedContainer* pPane);
  356. public:
  357. //-----------------------------------------------------------------------
  358. // Summary:
  359. //     Draws a line.
  360. // Parameters:
  361. //     pDC - Pointer to a valid device context
  362. //     x0 - Specifies the logical x-coordinate of the start position.
  363. //     y0 - Specifies the logical y-coordinate of the start position.
  364. //     x1 - Specifies the logical x-coordinate of the endpoint for the line.
  365. //     y1 - Specifies the logical y-coordinate of the endpoint for the line.
  366. //     nPen - Specifies the color used to paint the line.
  367. //-----------------------------------------------------------------------
  368. void Line(CDC* pDC, int x0, int y0, int x1, int y1, int nPen);
  369. void Line(CDC* pDC, int x0, int y0, int x1, int y1); // <combine CXTPDockingPanePaintManager::Line@CDC*@int@int@int@int@int>
  370. //-----------------------------------------------------------------------
  371. // Summary:
  372. //     Draws the text of a pane caption.
  373. // Parameters:
  374. //     dc - Reference to a valid device context
  375. //     strTitle - Text to draw in caption.
  376. //     rc - Client rectangle of the tabbed container
  377. //     bVertical -  TRUE to draw caption vertically
  378. //     bCalcWidth - TRUE to calculate width
  379. // Returns:
  380. //     The width of the text that was drawn in the pane caption bar.
  381. //-----------------------------------------------------------------------
  382. int DrawCaptionText(CDC* pDC, const CString& strTitle, CRect rc, BOOL bVertical, BOOL bCalcWidth = FALSE);
  383. //-----------------------------------------------------------------------
  384. // Summary:
  385. //     Sets the pixel at the point.
  386. // Parameters:
  387. //     pDC  - Pointer to a valid device context
  388. //     xPos - Specifies the logical x-coordinate of the point to be set.
  389. //     yPos - Specifies the logical y-coordinate of the point to be set.
  390. //     nPen - Specifies the color used to paint the point
  391. //-----------------------------------------------------------------------
  392. void Pixel(CDC* pDC, int xPos, int yPos, int nPen);
  393. //-----------------------------------------------------------------------
  394. // Summary:
  395. //     Draws a rectangle.
  396. // Parameters:
  397. //     pDC - Pointer to a valid device context
  398. //     rc - Specifies the rectangle in logical units.
  399. //     nPenEntry - Specifies the color used to paint the rectangle.
  400. //     nPenBorder - Specifies the color used to fill the rectangle.
  401. //-----------------------------------------------------------------------
  402. void Rectangle(CDC* pDC, CRect rc, int nPenEntry, int nPenBorder);
  403. //-----------------------------------------------------------------------
  404. // Summary:
  405. //     Call this member to use office (Tahoma) font.
  406. // Parameters:
  407. //     bUseOfficeFont - TRUE to use office font.
  408. //-----------------------------------------------------------------------
  409. void UseOfficeFont(BOOL bUseOfficeFont);
  410. //-----------------------------------------------------------------------
  411. // Summary:
  412. //     Call this method to change caption font
  413. // Parameters:
  414. //     pLogFont         - LOGFONT of caption to use
  415. //     bUseStandardFont - Must be FALSE
  416. //-----------------------------------------------------------------------
  417. void SetCaptionFontIndirect(LOGFONT* pLogFont, BOOL bUseStandardFont = FALSE);
  418. //-----------------------------------------------------------------------
  419. // Summary:
  420. //     Call this method to draw frame of floating window
  421. // Parameters:
  422. //     dc    - Pointer to a valid device context
  423. //     pPane - Floating window pointer
  424. //     rc    - Client rectangle of floating frame
  425. //-----------------------------------------------------------------------
  426. virtual void DrawFloatingFrame(CDC* pDC, CXTPDockingPaneMiniWnd* pPane, CRect rc);
  427. //-----------------------------------------------------------------------
  428. // Summary:
  429. //     Override this method to draw splitter.
  430. // Parameters:
  431. //     dc        - Pointer to a valid device context
  432. //     pSplitter - Pointer to splitter window
  433. //-----------------------------------------------------------------------
  434. virtual void DrawSplitter(CDC* pDC, CXTPDockingPaneSplitterWnd* pSplitter);
  435. //-----------------------------------------------------------------------
  436. // Summary:
  437. //     Call this method to set Paint manager used for tabs of tabbed container.
  438. // Parameters:
  439. //     pManager - New CXTPTabPaintManager pointer
  440. // Returns:
  441. //     CXTPTabPaintManager pointer that will be used.
  442. // See Also: GetTabPaintManager, SetPanelPaintManager
  443. //-----------------------------------------------------------------------
  444. CXTPTabPaintManager* SetTabPaintManager(CXTPTabPaintManager* pManager);
  445. //-----------------------------------------------------------------------
  446. // Summary:
  447. //     Call this method to set Paint manager used for tabs of panel.
  448. // Parameters:
  449. //     pManager - New CXTPTabPaintManager pointer
  450. // Returns:
  451. //     CXTPTabPaintManager pointer that will be used.
  452. // See Also: GetPanelPaintManager, SetTabPaintManager
  453. //-----------------------------------------------------------------------
  454. CXTPTabPaintManager* SetPanelPaintManager(CXTPTabPaintManager* pManager);
  455. //-----------------------------------------------------------------------
  456. // Summary:
  457. //     Retrieves pointer to CXTPTabPaintManager used to draw tabs of tabbed container.
  458. // Returns:
  459. //     Pointer used to draw tabs of tabbed container.
  460. // See Also: SetTabPaintManager, GetPanelPaintManager
  461. //-----------------------------------------------------------------------
  462. CXTPTabPaintManager* GetTabPaintManager() const;
  463. //-----------------------------------------------------------------------
  464. // Summary:
  465. //     Retrieves pointer to CXTPTabPaintManager used to draw tabs of panel.
  466. // Returns:
  467. //     Pointer used to draw tabs of auto-hide panel.
  468. // See Also: SetPanelPaintManager, GetTabPaintManager
  469. //-----------------------------------------------------------------------
  470. CXTPTabPaintManager* GetPanelPaintManager() const;
  471. //-----------------------------------------------------------------------
  472. // Summary:
  473. //     Retrieves the current color of the specified XP display element.
  474. // Parameters:
  475. //     nIndex - Specifies the display element whose color is to be
  476. //              retrieved.  This parameter can be one of the
  477. //              following values displayed in the table below:
  478. // Remarks:
  479. //     Display elements are the parts of a window
  480. //     and the display that appear on the system display screen.
  481. //     The function returns the red, green, blue (RGB) color value
  482. //     of the given element.  To provide a consistent look to all
  483. //     Windows applications, the operating system provides and
  484. //     maintains global settings that define the colors of various
  485. //     aspects of the display. These settings as a group are sometimes
  486. //     referred to as a "color scheme." To view the current color
  487. //     settings, click Control Panel, double-click the Display icon,
  488. //     and then click the "Appearance" tab.
  489. //<TABLE>
  490. //  <b>Constant</b>                   <b>Value</b>  <b>Description</b>
  491. //  --------------------------------  ============  ------------------------------------------------------------
  492. //  COLOR_SCROLLBAR                   0             Scroll bar color
  493. //  COLOR_BACKGROUND                  1             Desktop color
  494. //  COLOR_ACTIVECAPTION               2             Color of the title bar for the active window, Specifies the left side color in the color gradient of an active window's title bar if the gradient effect is enabled.
  495. //  COLOR_INACTIVECAPTION             3             Color of the title bar for the inactive window, Specifies the left side color in the color gradient of an inactive window's title bar if the gradient effect is enabled.
  496. //  COLOR_MENU                        4             Menu background color
  497. //  COLOR_WINDOW                      5             Window background color
  498. //  COLOR_WINDOWFRAME                 6             Window frame color
  499. //  COLOR_MENUTEXT                    7             Color of text on menus
  500. //  COLOR_WINDOWTEXT                  8             Color of text in windows
  501. //  COLOR_CAPTIONTEXT                 9             Color of text in caption, size box, and scroll arrow
  502. //  COLOR_ACTIVEBORDER                10            Border color of active window
  503. //  COLOR_INACTIVEBORDER              11            Border color of inactive window
  504. //  COLOR_APPWORKSPACE                12            Background color of multiple-document interface (MDI) applications
  505. //  COLOR_HIGHLIGHT                   13            Background color of items selected in a control
  506. //  COLOR_HIGHLIGHTTEXT               14            Text color of items selected in a control
  507. //  COLOR_BTNFACE                     15            Face color for three-dimensional display elements and for dialog box backgrounds.
  508. //  COLOR_BTNSHADOW                   16            Color of shading on the edge of command buttons
  509. //  COLOR_GRAYTEXT                    17            Grayed (disabled) text
  510. //  COLOR_BTNTEXT                     18            Text color on push buttons
  511. //  COLOR_INACTIVECAPTIONTEXT         19            Color of text in an inactive caption
  512. //  COLOR_BTNHIGHLIGHT                20            Highlight color for 3-D display elements
  513. //  COLOR_3DDKSHADOW                  21            Darkest shadow color for 3-D display elements
  514. //  COLOR_3DLIGHT                     22            Second lightest 3-D color after 3DHighlight, Light color for three-dimensional display elements (for edges facing the light source.)
  515. //  COLOR_INFOTEXT                    23            Color of text in ToolTips
  516. //  COLOR_INFOBK                      24            Background color of ToolTips
  517. //  COLOR_HOTLIGHT                    26            Color for a hot-tracked item. Single clicking a hot-tracked item executes the item.
  518. //  COLOR_GRADIENTACTIVECAPTION       27            Right side color in the color gradient of an active window's title bar. COLOR_ACTIVECAPTION specifies the left side color.
  519. //  COLOR_GRADIENTINACTIVECAPTION     28            Right side color in the color gradient of an inactive window's title bar. COLOR_INACTIVECAPTION specifies the left side color.
  520. //  XPCOLOR_TOOLBAR_FACE              30            XP toolbar background color.
  521. //  XPCOLOR_HIGHLIGHT                 31            XP menu item selected color.
  522. //  XPCOLOR_HIGHLIGHT_BORDER          32            XP menu item selected border color.
  523. //  XPCOLOR_HIGHLIGHT_PUSHED          33            XP menu item pushed color.
  524. //  XPCOLOR_HIGHLIGHT_CHECKED         36            XP menu item checked color.
  525. //  XPCOLOR_HIGHLIGHT_CHECKED_BORDER  37            An RGB value that represents the XP menu item checked border color.
  526. //  XPCOLOR_ICONSHADDOW               34            XP menu item icon shadow.
  527. //  XPCOLOR_GRAYTEXT                  35            XP menu item disabled text color.
  528. //  XPCOLOR_TOOLBAR_GRIPPER           38            XP toolbar gripper color.
  529. //  XPCOLOR_SEPARATOR                 39            XP toolbar separator color.
  530. //  XPCOLOR_DISABLED                  40            XP menu icon disabled color.
  531. //  XPCOLOR_MENUBAR_FACE              41            XP menu item text background color.
  532. //  XPCOLOR_MENUBAR_EXPANDED          42            XP hidden menu commands background color.
  533. //  XPCOLOR_MENUBAR_BORDER            43            XP menu border color.
  534. //  XPCOLOR_MENUBAR_TEXT              44            XP menu item text color.
  535. //  XPCOLOR_HIGHLIGHT_TEXT            45            XP menu item selected text color.
  536. //  XPCOLOR_TOOLBAR_TEXT              46            XP toolbar text color.
  537. //  XPCOLOR_PUSHED_TEXT               47            XP toolbar pushed text color.
  538. //  XPCOLOR_TAB_INACTIVE_BACK         48            XP inactive tab background color.
  539. //  XPCOLOR_TAB_INACTIVE_TEXT         49            XP inactive tab text color.
  540. //  XPCOLOR_HIGHLIGHT_PUSHED_BORDER   50            An RGB value that represents the XP border color for pushed in 3D elements.
  541. //  XPCOLOR_CHECKED_TEXT              45            XP color for text displayed in a checked button.
  542. //  XPCOLOR_3DFACE                    51            XP face color for three- dimensional display elements and for dialog box backgrounds.
  543. //  XPCOLOR_3DSHADOW                  52            XP shadow color for three-dimensional display elements (for edges facing away from the light source).
  544. //  XPCOLOR_EDITCTRLBORDER            53            XP color for the border color of edit controls.
  545. //  XPCOLOR_FRAME                     54            Office 2003 frame color.
  546. //  XPCOLOR_SPLITTER_FACE             55            XP splitter face color.
  547. //  XPCOLOR_LABEL                     56            Color for label control (xtpControlLabel)
  548. //  XPCOLOR_STATICFRAME               57            WinXP Static frame color
  549. //</TABLE>
  550. // Returns:
  551. //     The red, green, blue (RGB) color value of the given element.
  552. //-----------------------------------------------------------------------
  553. COLORREF GetXtremeColor(UINT nIndex);
  554. //-----------------------------------------------------------------------
  555. // Summary:
  556. //     Call this member to set the colors for each element to the
  557. //     color in the specified color array.
  558. // Parameters:
  559. //     cElements    - Number of elements in array.
  560. //     lpaElements  - Array of elements.
  561. //     lpaRgbValues - Array of RGB values.
  562. // See Also: SetColor
  563. //-----------------------------------------------------------------------
  564. void SetColors(int cElements, CONST INT *lpaElements, CONST COLORREF* lpaRgbValues);
  565. //-----------------------------------------------------------------------
  566. // Summary:
  567. //     Call this member to get caption height of tabbed container
  568. // See Also: GetTabsHeight
  569. //-----------------------------------------------------------------------
  570. int GetCaptionHeight() const;
  571. //-----------------------------------------------------------------------
  572. // Summary:
  573. //     Call this member to get tabs height of tabbed container
  574. // See Also: GetCaptionHeight
  575. //-----------------------------------------------------------------------
  576. int GetTabsHeight() const;
  577. //-----------------------------------------------------------------------
  578. // Summary:
  579. //     Call this member to set splitter style.
  580. // Parameters:
  581. //     dwStyle - New style of splitters
  582. // Remarks:
  583. //     dwStyle parameter can be one or more of the following:
  584. //     * <b>xtpPaneSplitterFlat</b>
  585. //     * <b>xtpPaneSplitter3D</b>
  586. //     * <b>xtpPaneSplitterSoft3D</b>
  587. //     * <b>xtpPaneSplitterGripperOfficeXP</b>
  588. //     * <b>xtpPaneSplitterGripperOffice2003</b>
  589. // Example:
  590. //     m_paneManager.GetPaintManager()->SetSplitterStyle(xtpPaneSplitterSoft3D + xtpPaneSplitterGripperOffice2003);
  591. //-----------------------------------------------------------------------
  592. void SetSplitterStyle(DWORD dwStyle);
  593. //-----------------------------------------------------------------------
  594. // Summary:
  595. //     Call this method to get splitter styles
  596. // See Also: XTPDockingPaneSplitterStyle, SetSplitterStyle
  597. //-----------------------------------------------------------------------
  598. DWORD GetSplitterStyle() const;
  599. //-----------------------------------------------------------------------
  600. // Summary:
  601. //     Call this member to set caption buttons style.
  602. // Parameters:
  603. //     nStyle - New style of caption buttons
  604. // Remarks:
  605. //     dwStyle parameter can be one or more of the following:
  606. //     * <b>xtpPaneCaptionButtonDefault</b>
  607. //     * <b>xtpPaneCaptionButtonOffice</b>
  608. //     * <b>xtpPaneCaptionButtonOffice2003</b>
  609. //     * <b>xtpPaneCaptionButtonThemeExplorerBar</b>
  610. //     * <b>xtpPaneCaptionButtonThemeButton</b>
  611. //     * <b>xtpPaneCaptionButtonThemeToolBar</b>
  612. // Example:
  613. //     m_paneManager.GetPaintManager()->SetCaptionButtonStyle(xtpPaneCaptionButtonOffice2003);
  614. // See Also: XTPDockingPaneCaptionButtonStyle, GetCaptionButtonStyle
  615. //-----------------------------------------------------------------------
  616. void SetCaptionButtonStyle(XTPDockingPaneCaptionButtonStyle nStyle);
  617. //-----------------------------------------------------------------------
  618. // Summary:
  619. //     Call this method to get caption button styles
  620. // See Also: XTPDockingPaneCaptionButtonStyle, SetCaptionButtonStyle
  621. //-----------------------------------------------------------------------
  622. XTPDockingPaneCaptionButtonStyle GetCaptionButtonStyle() const;
  623. //-----------------------------------------------------------------------
  624. // Summary:
  625. //     Call this member function to determine the current Windows XP
  626. //     theme in use.
  627. // Returns:
  628. //     A XTPCurrentSystemTheme enumeration that represents the
  629. //     current Windows theme in use, can be one of the following
  630. //     values:
  631. //     * <b>xtpSystemThemeUnknown</b> Indicates no known theme in use
  632. //     * <b>xtpSystemThemeBlue</b> Indicates blue theme in use
  633. //     * <b>xtpSystemThemeOlive</b> Indicates olive theme in use
  634. //     * <b>xtpSystemThemeSilver</b> Indicates silver theme in use
  635. // See Also: SetLunaTheme, RefreshLunaColors
  636. //-----------------------------------------------------------------------
  637. XTPCurrentSystemTheme GetCurrentSystemTheme() const;
  638. //-----------------------------------------------------------------------
  639. // Summary:
  640. //     Call this method to force system theme.
  641. // Parameters:
  642. //     systemTheme - theme to use. Can be any of the values listed in the Remarks section.
  643. // Remarks:
  644. //     theme can be one of the following:
  645. //     * <b>xtpSystemThemeUnknown</b> Disables <i>luna</i> theme support.
  646. //     * <b>xtpSystemThemeBlue</b> Enables blue theme
  647. //     * <b>xtpSystemThemeOlive</b> Enables olive theme
  648. //     * <b>xtpSystemThemeSilver</b> Enables silver theme
  649. //-----------------------------------------------------------------------
  650. void SetLunaTheme(XTPCurrentSystemTheme systemTheme);
  651. protected:
  652. //-----------------------------------------------------------------------
  653. // Summary:
  654. //     Draws only the glyph of a button. For example, the cross of a Close Button.
  655. // Parameters:
  656. //     pDC       - Pointer to the device context in which to draw.
  657. //     pButton   - Button pointer need to draw.
  658. //     pt        - Center point.
  659. //     clrButton - Color of glyph.
  660. //-----------------------------------------------------------------------
  661. virtual void DrawCaptionButtonEntry(CDC* pDC, CXTPDockingPaneCaptionButton* pButton, CPoint pt, COLORREF clrButton);
  662. //{{AFX_CODEJOCK_PRIVATE
  663. void DrawCaptionIcon(CDC* pDC, CXTPDockingPaneBase* pPane, CRect& rcCaption, BOOL bVertical);
  664. public:
  665. static CXTPDockingPane* AFX_CDECL GetSelectedPane(CXTPDockingPaneBase* pPane);
  666. BOOL IsCaptionEnabled(CXTPDockingPaneBase* pPane);
  667. //}}AFX_CODEJOCK_PRIVATE
  668. public:
  669. BOOL  m_bUseBoldCaptionFont;    // TRUE to use Bold font for caption
  670. BOOL  m_bHighlightActiveCaption; // TRUE to highlight active caption.
  671. int   m_nSplitterSize;          // Splitter size
  672. BOOL  m_bShowCaption;           // TRUE to draw captions of tabbed containers
  673. BOOL  m_bDrawSingleTab;         // TRUE to draw single tab.
  674. BOOL  m_bDrawCaptionIcon;       // TRUE to draw caption icon
  675. int   m_nSplitterIndent;
  676. CXTPPaintManagerColor    m_clrSplitterGripper; // Splitter gripper color
  677. CXTPPaintManagerColor    m_clrSplitter;        // Splitter color
  678. CXTPPaintManagerColorGradient    m_clrSplitterGradient;        // Splitter color
  679. CXTPPaintManagerColorGradient m_clrNormalCaption;   // Color of pane caption when inactive.
  680. CXTPPaintManagerColorGradient m_clrActiveCaption;   // Color of pane caption when active.
  681. CXTPPaintManagerColor m_clrNormalCaptionText;                    // Color of pane caption text when the caption is inactive
  682. CXTPPaintManagerColor m_clrActiveCaptionText;                    // Active caption text
  683. CXTPPaintManagerColor m_clrDisabledCaptionText;                  // Disabled caption text
  684. protected:
  685. XTPDockingPaneCaptionButtonStyle m_nCaptionButtonStyle;        // Caption button style
  686. DWORD m_dwSplitterStyle;        // Splitter style
  687. int   m_nTitleHeight;           // Title's height.
  688. int   m_nCaptionFontGap;        // Additional gap of font.
  689. int   m_nTabsHeight;            // Tab bar's height.
  690. CFont m_fntTitle;               // Title font.
  691. CFont m_fntTitleVertical;       // Title vertical font.
  692. BOOL  m_bUseOfficeFont;         // TRUE to use Tahoma font.
  693. BOOL  m_bUseStandardFont;       // TRUE to use system icon font.
  694. protected:
  695. CXTPTabPaintManager* m_pTabPaintManager;    // Paint Manager used to draw tabs for tabbed container
  696. CXTPTabPaintManager* m_pPanelPaintManager;  // Paint Manager used to draw tabs for auto-hide panel
  697. COLORREF m_arrColor[XPCOLOR_LAST + 1];      // Self colors array.
  698. XTPDockingPanePaintTheme m_themeCurrent;    // Current theme.
  699. CString                  m_strOfficeFont;   // Office font name.
  700. CRect                    m_rcCaptionMargin; // Margins of caption.
  701. XTPCurrentSystemTheme    m_systemTheme;     // Current system theme.
  702. CXTPWinThemeWrapper m_themeToolbar;         // Toolbar theme helper
  703. CXTPWinThemeWrapper m_themeExplorer;        // WinXP Explorer theme helper
  704. CXTPWinThemeWrapper m_themeButton;          // WinXP Button theme helper
  705. CXTPWinThemeWrapper m_themeWindow;          // WinXP Window Theme helper.
  706. BOOL     m_bLunaTheme;                      // TRUE if luna colors user
  707. private:
  708. friend class CXTPDockingPaneManager;
  709. };
  710. namespace XTPDockingPanePaintThemes
  711. {
  712. //===========================================================================
  713. // Summary:
  714. //     CXTPDockingPaneDefaultTheme is CXTPDockingPanePaintManager derived class, represents
  715. //     classic theme for docking panes.
  716. // Remarks:
  717. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeDefault); to set this theme.
  718. //===========================================================================
  719. class _XTP_EXT_CLASS CXTPDockingPaneDefaultTheme : public CXTPDockingPanePaintManager
  720. {
  721. public:
  722. //-------------------------------------------------------------------------
  723. // Summary:
  724. //     Constructs a CXTPDockingPaneDefaultTheme object.
  725. //-------------------------------------------------------------------------
  726. CXTPDockingPaneDefaultTheme();
  727. public:
  728. //-----------------------------------------------------------------------
  729. // Summary:
  730. //     Call this method to draw frame of floating window
  731. // Parameters:
  732. //     dc    - Pointer to a valid device context
  733. //     pPane - Floating window pointer
  734. //     rc    - CLient rectangle of floating frame
  735. //-----------------------------------------------------------------------
  736. void DrawFloatingFrame(CDC* pDC, CXTPDockingPaneMiniWnd* pPane, CRect rc);
  737. //-----------------------------------------------------------------------
  738. // Summary:
  739. //     Override this member function to draw a caption.
  740. // Parameters:
  741. //     dc - Reference to the device context in which to draw.
  742. //     pPane - Pointer to the tabbed container.
  743. //     rc - Client rectangle of the tabbed container.
  744. //-----------------------------------------------------------------------
  745. virtual void DrawCaption(CDC* pDC, CXTPDockingPaneTabbedContainer* pPane, CRect rc);
  746. virtual void DrawSidePanel(CDC* pDC, CXTPDockingPaneSidePanel* pPane, CRect rc);
  747. virtual void RefreshMetrics();
  748. protected:
  749. //-----------------------------------------------------------------------
  750. // Summary:
  751. //     Draw common part of tabbed and floating caption.
  752. // Parameters:
  753. //     dc        - Reference to the device context in which to draw.
  754. //     pPane     - Container which caption need to draw.
  755. //     rcCaption - Caption bounding rectangle
  756. //     strTitle  - Caption text.
  757. //     bActive   - TRUE if caption is active.
  758. //     bVertical - TRUE to draw caption vertically
  759. //-----------------------------------------------------------------------
  760. virtual void DrawCaptionPart(CDC* pDC, CXTPDockingPaneBase* pPane, CRect rcCaption, const CString& strTitle, BOOL bActive, BOOL bVertical);
  761. };
  762. //===========================================================================
  763. // Summary:
  764. //     CXTPDockingPaneGripperedTheme is CXTPDockingPaneDefaultTheme derived class, represents
  765. //     gripper theme for docking panes.
  766. // Remarks:
  767. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeGrippered); to set this theme.
  768. //===========================================================================
  769. class _XTP_EXT_CLASS CXTPDockingPaneGripperedTheme : public CXTPDockingPaneDefaultTheme
  770. {
  771. public:
  772. //-------------------------------------------------------------------------
  773. // Summary:
  774. //     Constructs a CXTPDockingPaneGripperedTheme object.
  775. //-------------------------------------------------------------------------
  776. CXTPDockingPaneGripperedTheme();
  777. public:
  778. //-----------------------------------------------------------------------
  779. // Summary:
  780. //     Call this method to draw frame of floating window
  781. // Parameters:
  782. //     dc    - Pointer to a valid device context
  783. //     pPane - Floating window pointer
  784. //     rc    - CLient rectangle of floating frame
  785. //-----------------------------------------------------------------------
  786. void DrawFloatingFrame(CDC* pDC, CXTPDockingPaneMiniWnd* pPane, CRect rc);
  787. //-----------------------------------------------------------------------
  788. // Summary:
  789. //     Override this member function to draw a caption.
  790. // Parameters:
  791. //     dc - Reference to the device context in which to draw.
  792. //     pPane - Pointer to the tabbed container.
  793. //     rc - Client rectangle of the tabbed container.
  794. //-----------------------------------------------------------------------
  795. virtual void DrawCaption(CDC* pDC, CXTPDockingPaneTabbedContainer* pPane, CRect rc);
  796. virtual void RefreshMetrics();
  797. protected:
  798. //-----------------------------------------------------------------------
  799. // Summary:
  800. //     Draw common part of tabbed and floating caption.
  801. // Parameters:
  802. //     dc        - Reference to the device context in which to draw.
  803. //     pPane     - Container which caption need to draw.
  804. //     rcCaption - Caption bounding rectangle
  805. //     strTitle  - Caption text.
  806. //     bActive   - TRUE if caption is active.
  807. //     bVertical - TRUE to draw caption vertically
  808. //-----------------------------------------------------------------------
  809. virtual void DrawCaptionPart(CDC* pDC, CXTPDockingPaneBase* pPane, CRect rcCaption, const CString& strTitle, BOOL bActive, BOOL bVertical);
  810. };
  811. //===========================================================================
  812. // Summary:
  813. //     CXTPDockingPaneExplorerTheme is CXTPDockingPaneDefaultTheme derived class, represents
  814. //     explorer theme for docking panes.
  815. // Remarks:
  816. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeExplorer); to set this theme.
  817. //===========================================================================
  818. class _XTP_EXT_CLASS CXTPDockingPaneExplorerTheme : public CXTPDockingPaneGripperedTheme
  819. {
  820. public:
  821. //-------------------------------------------------------------------------
  822. // Summary:
  823. //     Constructs a CXTPDockingPaneExplorerTheme object.
  824. //-------------------------------------------------------------------------
  825. CXTPDockingPaneExplorerTheme();
  826. public:
  827. //-----------------------------------------------------------------------
  828. // Summary:
  829. //     This method is called to refresh the visual metrics of the pane.
  830. //-----------------------------------------------------------------------
  831. void RefreshMetrics();
  832. protected:
  833. //-----------------------------------------------------------------------
  834. // Summary:
  835. //     Draw common part of tabbed and floating caption.
  836. // Parameters:
  837. //     dc        - Reference to the device context in which to draw.
  838. //     pPane     - Container which caption need to draw.
  839. //     rcCaption - Caption bounding rectangle
  840. //     strTitle  - Caption text.
  841. //     bActive   - TRUE if caption is active.
  842. //     bVertical - TRUE to draw caption vertically
  843. //-----------------------------------------------------------------------
  844. virtual void DrawCaptionPart(CDC* pDC, CXTPDockingPaneBase* pPane, CRect rcCaption, const CString& strTitle, BOOL bActive, BOOL bVertical);
  845. protected:
  846. CXTPWinThemeWrapper m_themeRebar;           // Rebar theme helper
  847. };
  848. //===========================================================================
  849. // Summary:
  850. //     CXTPDockingPaneOfficeTheme is CXTPDockingPaneGripperedTheme derived class, represents
  851. //     Office XP theme for docking panes.
  852. // Remarks:
  853. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeOffice); to set this theme.
  854. //===========================================================================
  855. class _XTP_EXT_CLASS CXTPDockingPaneOfficeTheme : public CXTPDockingPaneGripperedTheme
  856. {
  857. class COfficePanelColorSet;
  858. public:
  859. //-------------------------------------------------------------------------
  860. // Summary:
  861. //     Constructs a CXTPDockingPaneOfficeTheme object.
  862. //-------------------------------------------------------------------------
  863. CXTPDockingPaneOfficeTheme();
  864. //-----------------------------------------------------------------------
  865. // Summary:
  866. //     This method is called to refresh the visual metrics of the pane.
  867. //-----------------------------------------------------------------------
  868. virtual void RefreshMetrics();
  869. protected:
  870. //-----------------------------------------------------------------------
  871. // Summary:
  872. //     Draw common part of tabbed and floating caption.
  873. // Parameters:
  874. //     dc        - Reference to the device context in which to draw.
  875. //     pPane     - Container which caption need to draw.
  876. //     rcCaption - Caption bounding rectangle
  877. //     strTitle  - Caption text.
  878. //     bActive   - TRUE if caption is active.
  879. //     bVertical - TRUE to draw caption vertically
  880. //-----------------------------------------------------------------------
  881. virtual void DrawCaptionPart(CDC* pDC, CXTPDockingPaneBase* pPane, CRect rcCaption, const CString& strTitle, BOOL bActive, BOOL bVertical);
  882. //-----------------------------------------------------------------------
  883. // Summary:
  884. //     Draws the background of the pane caption.
  885. // Parameters:
  886. //     dc        - Reference to the device context in which to draw.
  887. //     pPane     - Container of the caption needs to draw the background.
  888. //     rcCaption - Caption bounding rectangle
  889. //     strTitle  - Caption text.
  890. //     bActive   - TRUE if caption is active.
  891. //     bVertical - TRUE to draw caption vertically
  892. //-----------------------------------------------------------------------
  893. virtual COLORREF FillCaptionPart(CDC* pDC, CXTPDockingPaneBase* pPane, CRect rcCaption, BOOL bActive, BOOL bVertical);
  894. protected:
  895. BOOL m_bGradientCaption;                            // TRUE to draw gradient caption.
  896. };
  897. //===========================================================================
  898. // Summary:
  899. //     CXTPDockingPaneNativeXPTheme is CXTPDockingPaneOfficeTheme derived class, represents
  900. //     Win XP theme for docking panes.
  901. // Remarks:
  902. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeNativeWinXP); to set this theme.
  903. //===========================================================================
  904. class _XTP_EXT_CLASS CXTPDockingPaneNativeXPTheme : public CXTPDockingPaneOfficeTheme
  905. {
  906. public:
  907. //-------------------------------------------------------------------------
  908. // Summary:
  909. //     Constructs a CXTPDockingPaneNativeXPTheme object.
  910. //-------------------------------------------------------------------------
  911. CXTPDockingPaneNativeXPTheme();
  912. //-----------------------------------------------------------------------
  913. // Summary:
  914. //     This method is called to refresh the visual metrics of the pane.
  915. //-----------------------------------------------------------------------
  916. virtual void RefreshMetrics();
  917. //-----------------------------------------------------------------------
  918. // Summary:
  919. //     Override this member function to draw a caption.
  920. // Parameters:
  921. //     dc - Reference to the device context in which to draw.
  922. //     pPane - Pointer to the tabbed container.
  923. //     rc - Client rectangle of the tabbed container.
  924. //-----------------------------------------------------------------------
  925. virtual void DrawCaption(CDC* pDC, CXTPDockingPaneTabbedContainer* pPane, CRect rc);
  926. //-----------------------------------------------------------------------
  927. // Summary:
  928. //     Call this method to draw frame of floating window
  929. // Parameters:
  930. //     dc    - Pointer to a valid device context
  931. //     pPane - Floating window pointer
  932. //     rc    - CLient rectangle of floating frame
  933. //-----------------------------------------------------------------------
  934. void DrawFloatingFrame(CDC* pDC, CXTPDockingPaneMiniWnd* pPane, CRect rc);
  935. void DrawSidePanel(CDC* pDC, CXTPDockingPaneSidePanel* pPane, CRect rc);
  936. protected:
  937. //-----------------------------------------------------------------------
  938. // Summary:
  939. //     Draw common part of tabbed and floating caption.
  940. // Parameters:
  941. //     dc        - Reference to the device context in which to draw.
  942. //     pPane     - Container which caption need to draw.
  943. //     rcCaption - Caption bounding rectangle
  944. //     strTitle  - Caption text.
  945. //     bActive   - TRUE if caption is active.
  946. //     bVertical - TRUE to draw caption vertically
  947. //-----------------------------------------------------------------------
  948. virtual void DrawCaptionPart(CDC* pDC, CXTPDockingPaneBase* pPane, CRect rcCaption, const CString& strTitle, BOOL bActive, BOOL bVertical);
  949. protected:
  950. };
  951. //===========================================================================
  952. // Summary:
  953. //     CXTPDockingPaneVisioTheme is CXTPDockingPaneOfficeTheme derived class, represents
  954. //     Visio theme for docking panes.
  955. // Remarks:
  956. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeVisio); to set this theme.
  957. //===========================================================================
  958. class _XTP_EXT_CLASS CXTPDockingPaneVisioTheme : public CXTPDockingPaneOfficeTheme
  959. {
  960. public:
  961. //-------------------------------------------------------------------------
  962. // Summary:
  963. //     Constructs a CXTPDockingPaneVisioTheme object.
  964. //-------------------------------------------------------------------------
  965. CXTPDockingPaneVisioTheme();
  966. //-----------------------------------------------------------------------
  967. // Summary:
  968. //     This method is called to refresh the visual metrics of the pane.
  969. //-----------------------------------------------------------------------
  970. void RefreshMetrics();
  971. //-----------------------------------------------------------------------
  972. // Summary:
  973. //     Override this member function to draw a caption.
  974. // Parameters:
  975. //     dc - Reference to the device context in which to draw.
  976. //     pPane - Pointer to the tabbed container.
  977. //     rc - Client rectangle of the tabbed container.
  978. //-----------------------------------------------------------------------
  979. void DrawCaption(CDC* pDC, CXTPDockingPaneTabbedContainer* pPane, CRect rc);
  980. //-----------------------------------------------------------------------
  981. // Summary:
  982. //     Override this member function to draw a tabbed container.
  983. // Parameters:
  984. //     dc    - Reference to the device context in which to draw.
  985. //     pPane - Pointer to the tabbed container.
  986. //     rc    - Client rectangle of the tabbed container.
  987. //-----------------------------------------------------------------------
  988. void DrawPane(CDC* pDC, CXTPDockingPaneTabbedContainer* pPane, CRect rc);
  989. //-----------------------------------------------------------------------
  990. // Summary:
  991. //     Override this member to change the caption rectangle of the child
  992. //     docking pane.
  993. // Parameters:
  994. //     pPane - Pointer to a CXTPDockingPaneTabbedContainer object.
  995. //     rc    - Caption rectangle to be changed.
  996. //-----------------------------------------------------------------------
  997. void AdjustCaptionRect(const CXTPDockingPaneTabbedContainer* pPane, CRect& rc);
  998. //-----------------------------------------------------------------------
  999. // Summary:
  1000. //     Call this method to draw frame of floating window
  1001. // Parameters:
  1002. //     dc    - Pointer to a valid device context
  1003. //     pPane - Floating window pointer
  1004. //     rc    - Client rectangle of floating frame
  1005. //-----------------------------------------------------------------------
  1006. void DrawFloatingFrame(CDC* pDC, CXTPDockingPaneMiniWnd* pPane, CRect rc);
  1007. };
  1008. //===========================================================================
  1009. // Summary:
  1010. //     CXTPDockingPaneOffice2003Theme is CXTPDockingPaneOfficeTheme derived class, represents
  1011. //     Office 2003 theme for docking panes.
  1012. // Remarks:
  1013. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeOffice2003); to set this theme.
  1014. //===========================================================================
  1015. class _XTP_EXT_CLASS CXTPDockingPaneOffice2003Theme : public CXTPDockingPaneOfficeTheme
  1016. {
  1017. public:
  1018. //-------------------------------------------------------------------------
  1019. // Summary:
  1020. //     Constructs a CXTPDockingPaneOffice2003Theme object.
  1021. //-------------------------------------------------------------------------
  1022. CXTPDockingPaneOffice2003Theme();
  1023. //-------------------------------------------------------------------------
  1024. // Summary:
  1025. //     Destroys a CXTPDockingPaneOffice2003Theme object, handles cleanup and deallocation.
  1026. //-------------------------------------------------------------------------
  1027. virtual ~CXTPDockingPaneOffice2003Theme();
  1028. //-----------------------------------------------------------------------
  1029. // Summary:
  1030. //     This method is called to refresh the visual metrics of the pane.
  1031. //-----------------------------------------------------------------------
  1032. virtual void RefreshMetrics();
  1033. //-----------------------------------------------------------------------
  1034. // Summary:
  1035. //     Override this member function to draw a caption.
  1036. // Parameters:
  1037. //     dc - Reference to the device context in which to draw.
  1038. //     pPane - Pointer to the tabbed container.
  1039. //     rc - Client rectangle of the tabbed container.
  1040. //-----------------------------------------------------------------------
  1041. virtual void DrawCaption(CDC* pDC, CXTPDockingPaneTabbedContainer* pPane, CRect rc);
  1042. //-----------------------------------------------------------------------
  1043. // Summary:
  1044. //     Call this method to draw frame of floating window
  1045. // Parameters:
  1046. //     dc    - Pointer to a valid device context
  1047. //     pPane - Floating window pointer
  1048. //     rc    - Client rectangle of floating frame
  1049. //-----------------------------------------------------------------------
  1050. virtual void DrawFloatingFrame(CDC* pDC, CXTPDockingPaneMiniWnd* pPane, CRect rc);
  1051. virtual void DrawSidePanel(CDC* pDC, CXTPDockingPaneSidePanel* pPane, CRect rc);
  1052. virtual CRect GetPaneCaptionRect(const CXTPDockingPaneSidePanel* pPane);
  1053. //-----------------------------------------------------------------------
  1054. // Summary:
  1055. //     Call this method to get caption gripper for tabbed container
  1056. // Parameters:
  1057. //     pPane - Tabbed container to test
  1058. // Returns: Bounding rectangle of gripper to set size cursor
  1059. //-----------------------------------------------------------------------
  1060. virtual CRect GetCaptionGripperRect(const CXTPDockingPaneTabbedContainer* pPane);
  1061. protected:
  1062. //-----------------------------------------------------------------------
  1063. // Summary:
  1064. //     Draw common part of tabbed and floating caption.
  1065. // Parameters:
  1066. //     dc        - Reference to the device context in which to draw.
  1067. //     pPane     - Container which caption need to draw.
  1068. //     rcCaption - Caption bounding rectangle
  1069. //     strTitle  - Caption text.
  1070. //     bActive   - TRUE if caption is active.
  1071. //     bVertical - TRUE to draw caption vertically
  1072. //-----------------------------------------------------------------------
  1073. virtual void DrawCaptionPart(CDC* pDC, CXTPDockingPaneBase* pPane, CRect rcCaption, const CString& strTitle, BOOL bActive, BOOL bVertical);
  1074. public:
  1075. BOOL     m_bDrawGripper;            // TRUE to draw gripper
  1076. protected:
  1077. BOOL     m_bRoundedCaption;         // TRUE to draw rounded caption
  1078. };
  1079. //===========================================================================
  1080. // Summary:
  1081. //     CXTPDockingPaneOffice2007Theme is CXTPDockingPaneOffice2003Theme derived class, represents
  1082. //     Office 2007 theme for docking panes.
  1083. // Remarks:
  1084. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeOffice2007); to set this theme.
  1085. //===========================================================================
  1086. class _XTP_EXT_CLASS CXTPDockingPaneOffice2007Theme : public CXTPDockingPaneOffice2003Theme
  1087. {
  1088. public:
  1089. //-------------------------------------------------------------------------
  1090. // Summary:
  1091. //     Constructs a CXTPDockingPaneOffice2007Theme object.
  1092. //-------------------------------------------------------------------------
  1093. CXTPDockingPaneOffice2007Theme();
  1094. public:
  1095. //-----------------------------------------------------------------------
  1096. // Summary:
  1097. //     This method is called to refresh the visual metrics of the pane.
  1098. //-----------------------------------------------------------------------
  1099. void RefreshMetrics();
  1100. //-----------------------------------------------------------------------
  1101. // Summary:
  1102. //     Override this member function to draw a caption.
  1103. // Parameters:
  1104. //     dc - Reference to the device context in which to draw.
  1105. //     pPane - Pointer to the tabbed container.
  1106. //     rc - Client rectangle of the tabbed container.
  1107. //-----------------------------------------------------------------------
  1108. void DrawCaption(CDC* pDC, CXTPDockingPaneTabbedContainer* pPane, CRect rc);
  1109. };
  1110. //===========================================================================
  1111. // Summary:
  1112. //     CXTPDockingPaneWord2007Theme is CXTPDockingPaneOffice2003Theme derived class, represents
  1113. //     Office Word 2007 theme for docking panes.
  1114. // Remarks:
  1115. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeWord2007); to set this theme.
  1116. //===========================================================================
  1117. class _XTP_EXT_CLASS CXTPDockingPaneWord2007Theme : public CXTPDockingPaneOffice2003Theme
  1118. {
  1119. public:
  1120. //-------------------------------------------------------------------------
  1121. // Summary:
  1122. //     Constructs a CXTPDockingPaneWord2007Theme object.
  1123. //-------------------------------------------------------------------------
  1124. CXTPDockingPaneWord2007Theme();
  1125. public:
  1126. //-----------------------------------------------------------------------
  1127. // Summary:
  1128. //     This method is called to refresh the visual metrics of the pane.
  1129. //-----------------------------------------------------------------------
  1130. void RefreshMetrics();
  1131. //-----------------------------------------------------------------------
  1132. // Summary:
  1133. //     Override this member function to draw a caption.
  1134. // Parameters:
  1135. //     dc - Reference to the device context in which to draw.
  1136. //     pPane - Pointer to the tabbed container.
  1137. //     rc - Client rectangle of the tabbed container.
  1138. //-----------------------------------------------------------------------
  1139. void DrawCaption(CDC* pDC, CXTPDockingPaneTabbedContainer* pPane, CRect rc);
  1140. void DrawCaptionPart(CDC* pDC, CXTPDockingPaneBase* pPane, CRect rcCaption, const CString& strTitle, BOOL bActive, BOOL bVertical);
  1141. void AdjustClientRect(CXTPDockingPaneTabbedContainer* pPane, CRect& rect, BOOL bApply);
  1142. void DrawPane(CDC* pDC, CXTPDockingPaneTabbedContainer* pPane, CRect rc);
  1143. BOOL PaneHasBorders(CXTPDockingPaneTabbedContainer* pPane) const;
  1144. };
  1145. //===========================================================================
  1146. // Summary:
  1147. //     CXTPDockingPaneShortcutBar2003Theme is CXTPDockingPaneOffice2003Theme derived class, represents
  1148. //     Office 2003 theme for docking panes.
  1149. // Remarks:
  1150. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeShortcutBar2003); to set this theme.
  1151. //===========================================================================
  1152. class _XTP_EXT_CLASS CXTPDockingPaneShortcutBar2003Theme : public CXTPDockingPaneOffice2003Theme
  1153. {
  1154. public:
  1155. //-------------------------------------------------------------------------
  1156. // Summary:
  1157. //     Constructs a CXTPDockingPaneShortcutBar2003Theme object.
  1158. //-------------------------------------------------------------------------
  1159. CXTPDockingPaneShortcutBar2003Theme();
  1160. //-------------------------------------------------------------------------
  1161. // Summary:
  1162. //     Destroys a CXTPDockingPaneShortcutBar2003Theme object, handles cleanup and deallocation.
  1163. //-------------------------------------------------------------------------
  1164. virtual ~CXTPDockingPaneShortcutBar2003Theme();
  1165. public:
  1166. //-----------------------------------------------------------------------
  1167. // Summary:
  1168. //     This method is called to refresh the visual metrics of the pane.
  1169. //-----------------------------------------------------------------------
  1170. virtual void RefreshMetrics();
  1171. //-----------------------------------------------------------------------
  1172. // Summary:
  1173. //     Call this method to get caption gripper for tabbed container
  1174. // Parameters:
  1175. //     pPane - Tabbed container to test
  1176. // Returns: Bounding rectangle of gripper to set size cursor
  1177. //-----------------------------------------------------------------------
  1178. virtual CRect GetCaptionGripperRect(const CXTPDockingPaneTabbedContainer* pPane);
  1179. };
  1180. //===========================================================================
  1181. // Summary:
  1182. //     CXTPDockingPaneWhidbeyTheme is CXTPDockingPaneOfficeTheme derived class, represents
  1183. //     Visual Studio 2005 theme for docking panes.
  1184. // Remarks:
  1185. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeWhidbey); to set this theme.
  1186. //===========================================================================
  1187. class _XTP_EXT_CLASS CXTPDockingPaneWhidbeyTheme : public CXTPDockingPaneOfficeTheme
  1188. {
  1189. public:
  1190. class CColorSetWhidbey;
  1191. class CColorSetVisualStudio2005;
  1192. //-------------------------------------------------------------------------
  1193. // Summary:
  1194. //     Constructs a CXTPDockingPaneWhidbeyTheme object.
  1195. //-------------------------------------------------------------------------
  1196. CXTPDockingPaneWhidbeyTheme();
  1197. public:
  1198. //-------------------------------------------------------------------------
  1199. // Summary:
  1200. //     This method is called to refresh the visual metrics of the pane.
  1201. //-------------------------------------------------------------------------
  1202. void RefreshMetrics();
  1203. };
  1204. //===========================================================================
  1205. // Summary:
  1206. //     CXTPDockingPaneVisualStudio2005SecondTheme is CXTPDockingPaneWhidbeyTheme derived class, represents
  1207. //     Visual Studio 2005 beta 2 theme for docking panes.
  1208. // Remarks:
  1209. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeWhidbey); to set this theme.
  1210. //===========================================================================
  1211. class _XTP_EXT_CLASS CXTPDockingPaneVisualStudio2005SecondTheme : public CXTPDockingPaneWhidbeyTheme
  1212. {
  1213. public:
  1214. //-------------------------------------------------------------------------
  1215. // Summary:
  1216. //     Constructs a CXTPDockingPaneVisualStudio2005SecondTheme object.
  1217. //-------------------------------------------------------------------------
  1218. CXTPDockingPaneVisualStudio2005SecondTheme();
  1219. //-------------------------------------------------------------------------
  1220. // Summary:
  1221. //     This method is called to refresh the visual metrics of the pane.
  1222. //-------------------------------------------------------------------------
  1223. void RefreshMetrics();
  1224. //-----------------------------------------------------------------------
  1225. // Summary:
  1226. //     Draws the background of the pane caption.
  1227. // Parameters:
  1228. //     dc        - Reference to the device context in which to draw.
  1229. //     pPane     - Container of the caption needs to draw the background.
  1230. //     rcCaption - Caption bounding rectangle
  1231. //     strTitle  - Caption text.
  1232. //     bActive   - TRUE if caption is active.
  1233. //     bVertical - TRUE to draw caption vertically
  1234. //-----------------------------------------------------------------------
  1235. virtual COLORREF FillCaptionPart(CDC* pDC, CXTPDockingPaneBase* pPane, CRect rcCaption, BOOL bActive, BOOL bVertical);
  1236. protected:
  1237. COLORREF m_clrCaptionBorder;    //Color used to draw the border of the pane caption.
  1238. };
  1239. //===========================================================================
  1240. // Summary:
  1241. //     CXTPDockingPaneVisualStudio2005SecondTheme is CXTPDockingPaneVisualStudio2005SecondTheme derived class, represents
  1242. //     Visual Studio 2005 theme for docking panes.
  1243. // Remarks:
  1244. //     Call CXTPDockingPaneManager::SetTheme(xtpPaneThemeWhidbey); to set this theme.
  1245. //===========================================================================
  1246. class _XTP_EXT_CLASS CXTPDockingPaneVisualStudio2005Theme : public CXTPDockingPaneVisualStudio2005SecondTheme
  1247. {
  1248. public:
  1249. //-------------------------------------------------------------------------
  1250. // Summary:
  1251. //     Constructs a CXTPDockingPaneVisualStudio2005Theme object.
  1252. //-------------------------------------------------------------------------
  1253. CXTPDockingPaneVisualStudio2005Theme();
  1254. };
  1255. }
  1256. using namespace XTPDockingPanePaintThemes;
  1257. AFX_INLINE int CXTPDockingPanePaintManager::GetCaptionHeight() const {
  1258. return m_nTitleHeight;
  1259. }
  1260. AFX_INLINE int CXTPDockingPanePaintManager::GetTabsHeight() const{
  1261. return m_nTabsHeight;
  1262. }
  1263. AFX_INLINE CXTPTabPaintManager* CXTPDockingPanePaintManager::GetTabPaintManager() const {
  1264. return m_pTabPaintManager;
  1265. }
  1266. AFX_INLINE CXTPTabPaintManager* CXTPDockingPanePaintManager::GetPanelPaintManager() const {
  1267. return m_pPanelPaintManager;
  1268. }
  1269. AFX_INLINE void CXTPDockingPanePaintManager::DrawFloatingFrame(CDC* /*pDC*/, CXTPDockingPaneMiniWnd* /*pPane*/, CRect /*rc*/) {
  1270. }
  1271. AFX_INLINE void CXTPDockingPanePaintManager::DrawSidePanel(CDC* /*pDC*/, CXTPDockingPaneSidePanel* /*pPane*/, CRect /*rc*/) {
  1272. }
  1273. AFX_INLINE void CXTPDockingPanePaintManager::SetCaptionButtonStyle(XTPDockingPaneCaptionButtonStyle nStyle) {
  1274. m_nCaptionButtonStyle = nStyle;
  1275. }
  1276. AFX_INLINE XTPDockingPaneCaptionButtonStyle CXTPDockingPanePaintManager::GetCaptionButtonStyle() const {
  1277. return m_nCaptionButtonStyle;
  1278. }
  1279. #endif // #if !defined(__XTPDOCKINGPANEPAINTMANAGER_H__)