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

对话框与窗口

开发平台:

Visual C++

  1. // XTPPaintManager.h : interface for the CXTPPaintManager 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(__XTPPAINTMANAGER_H__)
  22. #define __XTPPAINTMANAGER_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "XTPCommandBarsDefines.h"
  28. #include "Common/XTPWinThemeWrapper.h"
  29. #include "Common/XTPColorManager.h"
  30. #include "Common/XTPDrawHelpers.h"
  31. class CXTPControlButton;
  32. class CXTPControlPopup;
  33. class CXTPControl;
  34. class CXTPToolBar;
  35. class CXTPCommandBar;
  36. class CXTPCommandBars;
  37. class CXTPPopupBar;
  38. class CXTPControlComboBox;
  39. class CXTPTabControl;
  40. class CXTPDockBar;
  41. class CXTPControlEdit;
  42. class CXTPImageManagerIcon;
  43. class CXTPStatusBar;
  44. class CXTPStatusBarPane;
  45. class CXTPStatusBarSwitchPane;
  46. class CXTPDialogBar;
  47. class CXTPMessageBar;
  48. class CXTPMessageBarButton;
  49. class CXTPCommandBarKeyboardTip;
  50. class CXTPBufferDC;
  51. class CXTPControlGalleryPaintManager;
  52. class CXTPSliderPaintManager;
  53. class CXTPShadowManager;
  54. class CXTPProgressPaintManager;
  55. //-----------------------------------------------------------------------
  56. // Summary:
  57. //     Special control with extended drawing.
  58. // See Also: CXTPPaintManager::DrawSpecialControl
  59. //
  60. // <KEYWORDS xtpButtonExpandToolbar, xtpButtonExpandMenu, xtpButtonHideFloating, xtpButtonExpandFloating, xtpButtonCustomize>
  61. //-----------------------------------------------------------------------
  62. enum XTPSpecialControl
  63. {
  64. xtpButtonExpandToolbar, // Control is option button of docking toolbar.
  65. xtpButtonExpandMenu,    // Control is expand button of popup bar.
  66. xtpButtonHideFloating,  // Control is hide button of floating toolbar.
  67. xtpButtonExpandFloating // Control is option button of floating toolbar.
  68. };
  69. //------------------------------------------------------------------------
  70. // Summary:
  71. //     This structure collect icons options for command bars.
  72. // Example:
  73. //     <code>XTPPaintManager()->GetIconsInfo()->bIconsWithShadow = FALSE;</code>
  74. // See Also: CXTPPaintManager::GetIconsInfo
  75. //------------------------------------------------------------------------
  76. struct XTP_COMMANDBARS_ICONSINFO
  77. {
  78. BOOL bUseFadedIcons;    // If TRUE, Icons will appear faded.
  79. BOOL bUseDisabledIcons; // If TRUE, disabled icons will be used when the control is disabled.
  80. BOOL bIconsWithShadow;  // If TRUE, when the mouse pointer is moved over a command bar control, the icons will appear to "jump" away from the screen casting a shadow.
  81. BOOL bOfficeStyleDisabledIcons;  // If TRUE, Office 2003 style disabled icons will be drawn when using disabled icons.
  82. };
  83. //===========================================================================
  84. // Summary:
  85. //     PaintManagers used CFont wrapper.
  86. //===========================================================================
  87. class _XTP_EXT_CLASS CXTPPaintManagerFont : public CFont
  88. {
  89. public:
  90. //-----------------------------------------------------------------------
  91. // Summary:
  92. //     Constructs a CXTPPaintManagerFont object.
  93. //-----------------------------------------------------------------------
  94. CXTPPaintManagerFont()
  95. {
  96. m_bStandardFont = TRUE;
  97. }
  98. //-----------------------------------------------------------------------
  99. // Summary:
  100. //     Sets application defined font
  101. // Parameters:
  102. //     lpLogFont - Application defined font
  103. //-----------------------------------------------------------------------
  104. BOOL SetCustomFont(const LOGFONT* lpLogFont)
  105. {
  106. m_bStandardFont = (lpLogFont == NULL);
  107. if (lpLogFont)
  108. {
  109. DeleteObject();
  110. return CreateFontIndirect(lpLogFont);
  111. }
  112. return TRUE;
  113. }
  114. //-----------------------------------------------------------------------
  115. // Summary:
  116. //      Call this method to set custom font
  117. // Parameters:
  118. //      bCustomFont - TRUE if custom font used
  119. // See Also: SetStandardFont
  120. //-----------------------------------------------------------------------
  121. void SetCustomFont(BOOL bCustomFont)
  122. {
  123. m_bStandardFont = !bCustomFont;
  124. }
  125. //-----------------------------------------------------------------------
  126. // Summary:
  127. //     Sets paint manager's font
  128. // Parameters:
  129. //     lpLogFont - PaintManager's defined font
  130. //-----------------------------------------------------------------------
  131. BOOL SetStandardFont(const LOGFONT* lpLogFont)
  132. {
  133. if (lpLogFont && (m_bStandardFont || !GetSafeHandle()))
  134. {
  135. DeleteObject();
  136. return CreateFontIndirect(lpLogFont);
  137. }
  138. return TRUE;
  139. }
  140. protected:
  141. BOOL m_bStandardFont; // TRUE to use standard font;
  142. };
  143. //===========================================================================
  144. // Summary:
  145. //     Paint manager of the command bars.
  146. //===========================================================================
  147. class _XTP_EXT_CLASS CXTPPaintManager : public CXTPCmdTarget
  148. {
  149. private:
  150. friend class CXTPPaintManager* XTPPaintManager();
  151. class CPaintManagerDestructor;
  152. public:
  153. //-----------------------------------------------------------------------
  154. // Summary:
  155. //     This method is called to draw the control.
  156. // Parameters:
  157. //     pDC     - Pointer to a valid device context
  158. //     pButton - Points to a CXTPControl object
  159. //     bDraw   - TRUE to draw; FALSE to retrieve the size of the control.
  160. // Returns:
  161. //     Size of the control.
  162. //-----------------------------------------------------------------------
  163. CSize DrawControl(CDC* pDC, CXTPControl* pButton, BOOL bDraw = TRUE);
  164. //-----------------------------------------------------------------------
  165. // Summary:
  166. //     This method is called to draw the control placed on the PopupBar.
  167. // Parameters:
  168. //     pDC     - Pointer to a valid device context
  169. //     pButton - Points to a CXTPControl object
  170. //     bDraw   - TRUE to draw; FALSE to retrieve the size of the control.
  171. // Returns:
  172. //     Size of the control.
  173. //-----------------------------------------------------------------------
  174. virtual CSize DrawControlPopupParent(CDC* pDC, CXTPControl* pButton, BOOL bDraw);
  175. //-----------------------------------------------------------------------
  176. // Summary:
  177. //     This method is called to draw the control placed on the ToolBar.
  178. // Parameters:
  179. //     pDC     - Pointer to a valid device context
  180. //     pButton - Points to a CXTPControl object
  181. //     bDraw   - TRUE to draw; FALSE to retrieve the size of the control.
  182. // Returns:
  183. //     Size of the control.
  184. //-----------------------------------------------------------------------
  185. virtual CSize DrawControlToolBarParent(CDC* pDC, CXTPControl* pButton, BOOL bDraw);
  186. //-----------------------------------------------------------------------
  187. // Summary:
  188. //     This method is called to draw the frame for the SplitButton
  189. //     control
  190. // Parameters:
  191. //     pDC     - Pointer to a valid device context
  192. //     pButton - Points to a CXTPControl object
  193. //     rc      - Bounding rectangle to draw
  194. //-----------------------------------------------------------------------
  195. virtual void DrawSplitButtonFrame(CDC* pDC, CXTPControl* pButton, CRect rc) = 0;
  196. //-----------------------------------------------------------------------
  197. // Summary:
  198. //     This method is called to draw the control.
  199. // Parameters:
  200. //     pDC    - Pointer to a valid device context
  201. //     pCombo - ComboBox to draw.
  202. //     bDraw  - TRUE to draw; FALSE to retrieve the size of the control.
  203. // Returns:
  204. //     Size of the control.
  205. //-----------------------------------------------------------------------
  206. virtual CSize DrawControlComboBox(CDC* pDC, CXTPControlComboBox* pCombo, BOOL bDraw);
  207. //-----------------------------------------------------------------------
  208. // Summary:
  209. //     This method returns the edit control back color to draw.
  210. // Parameters:
  211. //     pControl - Points to a CXTPControl object to get the back color from.
  212. // Returns: Edit control back color.
  213. //-----------------------------------------------------------------------
  214. virtual COLORREF GetControlEditBackColor(CXTPControl* pControl);
  215. //-----------------------------------------------------------------------
  216. // Summary:
  217. //     This method is called to draw the control.
  218. // Parameters:
  219. //     pDC   - Pointer to a valid device context
  220. //     bDraw - TRUE to draw; FALSE to retrieve the size of the control.
  221. //     pEdit - Edit control to draw.
  222. // Returns:
  223. //     Size of the control.
  224. //-----------------------------------------------------------------------
  225. virtual CSize DrawControlEdit(CDC* pDC, CXTPControlEdit* pEdit, BOOL bDraw);
  226. //-----------------------------------------------------------------------
  227. // Summary:
  228. //     This method is called to draw the control placed on the ListBox.
  229. // Parameters:
  230. //     pDC       - Pointer to a valid device context
  231. //     pButton   - Points to a CXTPControl object
  232. //     rc        - Bounding rectangle to draw.
  233. //     bSelected - TRUE if the control is selected.
  234. //     bDraw     - TRUE to draw; FALSE to retrieve the size of the control.
  235. //     pCommandBars - CommandBars object which metrics need to use.
  236. // Returns:
  237. //     Size of the control.
  238. //-----------------------------------------------------------------------
  239. virtual CSize DrawListBoxControl(CDC* pDC, CXTPControl* pButton, CRect rc, BOOL bSelected, BOOL bDraw, CXTPCommandBars* pCommandBars = 0) = 0;
  240. //-----------------------------------------------------------------------
  241. // Summary:
  242. //     This method is called to fill the command bar's face.
  243. // Parameters:
  244. //     pDC  - Pointer to a valid device context
  245. //     pBar - Points to a CXTPCommandBar object to draw.
  246. //-----------------------------------------------------------------------
  247. virtual void FillCommandBarEntry(CDC* pDC, CXTPCommandBar* pBar) = 0;
  248. //-----------------------------------------------------------------------
  249. // Summary:
  250. //     This method is called to fill the control's face
  251. // Parameters:
  252. //     pDC         - Pointer to a valid device context
  253. //     pButton - Points to a CXTPControl object to draw.
  254. //-----------------------------------------------------------------------
  255. virtual void DrawControlEntry(CDC* pDC, CXTPControl* pButton);
  256. //-----------------------------------------------------------------------
  257. // Summary:
  258. //     This method returns control text color to draw
  259. // Parameters:
  260. //     pButton - Points to a CXTPControl object to draw.
  261. //-----------------------------------------------------------------------
  262. virtual COLORREF GetControlTextColor(CXTPControl* pButton);
  263. //-----------------------------------------------------------------------
  264. // Summary:
  265. //     This method retrieves buttons text color
  266. // Parameters:
  267. //     bSelected   - TRUE if the control is selected.
  268. //     bPressed    - TRUE if the control is pushed.
  269. //     bEnabled    - TRUE if the control is enabled.
  270. //     bChecked    - TRUE if the control is checked.
  271. //     bPopuped    - TRUE if the control is popuped.
  272. //     barType     - Parent's bar type
  273. //     barPosition - Parent's bar position.
  274. //-----------------------------------------------------------------------
  275. virtual COLORREF GetRectangleTextColor(BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition) = 0;
  276. //-----------------------------------------------------------------------
  277. // Summary:
  278. //     This method is called to fill the control's face
  279. // Parameters:
  280. //     pDC         - Pointer to a valid device context
  281. //     rc          - Rectangle to draw.
  282. //     bSelected   - TRUE if the control is selected.
  283. //     bPressed    - TRUE if the control is pushed.
  284. //     bEnabled    - TRUE if the control is enabled.
  285. //     bChecked    - TRUE if the control is checked.
  286. //     bPopuped    - TRUE if the control is popuped.
  287. //     barType     - Parent's bar type
  288. //     barPosition - Parent's bar position.
  289. //-----------------------------------------------------------------------
  290. virtual void DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition) = 0;
  291. //-----------------------------------------------------------------------
  292. // Summary:
  293. //     This method is called to draw the command bar's gripper.
  294. // Parameters:
  295. //     pDC   - Pointer to a valid device context
  296. //     pBar  - Points to a CXTPCommandBar object
  297. //     bDraw - TRUE to draw; FALSE to retrieve the size of the gripper.
  298. // Returns:
  299. //     Size of the gripper.
  300. //-----------------------------------------------------------------------
  301. virtual CSize DrawCommandBarGripper(CDC* pDC, CXTPCommandBar* pBar, BOOL bDraw = TRUE);
  302. //-----------------------------------------------------------------------
  303. // Summary:
  304. //     This method is called to draw a command bar's separator.
  305. // Parameters:
  306. //     pDC      - Pointer to a valid device context
  307. //     pBar     - Points to a CXTPCommandBar object
  308. //     pControl - Points to a CXTPControl object
  309. //     bDraw    - TRUE to draw; FALSE to retrieve the size of the separator.
  310. // Returns:
  311. //     This method is called to draw a command bar's separator.
  312. //-----------------------------------------------------------------------
  313. virtual CSize DrawCommandBarSeparator(CDC* pDC, CXTPCommandBar* pBar, CXTPControl* pControl, BOOL bDraw = TRUE) = 0;
  314. //-----------------------------------------------------------------------
  315. // Summary:
  316. //     This method is called to determine offset of popuped bar.
  317. // Parameters:
  318. //     rc        - Control's bounding rectangle.
  319. //     pControl  - Points to a CXTPControl object
  320. //     bVertical - TRUE if control docked vertically.
  321. //-----------------------------------------------------------------------
  322. virtual void AdjustExcludeRect(CRect& rc, CXTPControl* pControl, BOOL bVertical) = 0;
  323. //-----------------------------------------------------------------------
  324. // Summary:
  325. //     This method is called to draw a single pane text of the status bar.
  326. // Parameters:
  327. //     pDC     - Pointer to a valid device context
  328. //     pPane - The status bar pane need to draw
  329. //     rcItem - Item rectangle
  330. //-----------------------------------------------------------------------
  331. virtual void DrawStatusBarPaneEntry(CDC* pDC, CRect rcItem, CXTPStatusBarPane* pPane);
  332. virtual void DrawStatusBarButtonFace(CDC* pDC, CRect rcItem, CXTPStatusBarPane* pPane);
  333. virtual int DrawStatusBarSwitchPane(CDC* pDC, CRect rcItem, CXTPStatusBarSwitchPane* pPane);
  334. //-----------------------------------------------------------------------
  335. // Summary:
  336. //     This method is called to draw frame of single cell of status bar.
  337. // Parameters:
  338. //     pDC - Points to a valid device context.
  339. //     rc - CRect object specifying size of area.
  340. //     pPane - The status bar pane need to draw
  341. //     bGripperPane - TRUE if pane is last cell of status bar
  342. //-----------------------------------------------------------------------
  343. virtual void DrawStatusBarPaneBorder(CDC* pDC, CRect rc, CXTPStatusBarPane* pPane, BOOL bGripperPane);
  344. virtual void DrawStatusBarPaneSeparator(CDC* pDC, CRect rc, CXTPStatusBarPane* pPane);
  345. //-----------------------------------------------------------------------
  346. // Summary:
  347. //     This method is called to draw the status bar's gripper.
  348. // Parameters:
  349. //     pDC      - Pointer to a valid device context
  350. //     rcClient - Client rectangle of the status bar.
  351. //-----------------------------------------------------------------------
  352. virtual void DrawStatusBarGripper(CDC* pDC, CRect rcClient);
  353. //-----------------------------------------------------------------------
  354. // Summary:
  355. //     This method is called to fill a dockbar.
  356. // Parameters:
  357. //     pDC  - Pointer to a valid device context
  358. //     pBar - Points to a CXTPDockBar object
  359. //-----------------------------------------------------------------------
  360. virtual void FillDockBar(CDC* pDC, CXTPDockBar* pBar);
  361. virtual void FillMessageBar(CDC* pDC, CXTPMessageBar* pBar);
  362. virtual void DrawMessageBarButton(CDC* pDC, CXTPMessageBarButton* pButton);
  363. //-----------------------------------------------------------------------
  364. // Summary:
  365. //     This method is called to fill a status bar.
  366. // Parameters:
  367. //     pDC  - Pointer to a valid device context
  368. //     pBar - Points to a CXTPStatusBar object
  369. //-----------------------------------------------------------------------
  370. virtual void FillStatusBar(CDC* pDC, CXTPStatusBar* pBar);
  371. //-----------------------------------------------------------------------
  372. // Summary:
  373. //     This method is called to refresh the visual metrics of the manager.
  374. //-----------------------------------------------------------------------
  375. virtual void RefreshMetrics();
  376. //-----------------------------------------------------------------------
  377. // Summary:
  378. //     Determines the kind of shadow to use.
  379. // Returns:
  380. //     TRUE to use alpha and solid shadow; otherwise returns FALSE
  381. //-----------------------------------------------------------------------
  382. int GetShadowOptions() const;
  383. //-----------------------------------------------------------------------
  384. // Summary:
  385. //     This method is called to draw the specified controls.
  386. // Parameters:
  387. //     pDC         - Pointer to a valid device context
  388. //     controlType - Special control enumerator.
  389. //     pButton     - Points to a CXTPControl object to draw.
  390. //     pBar        - Parent CXTPCommandBar object.
  391. //     bDraw       - TRUE to draw; FALSE to retrieve the size of the
  392. //                   control.
  393. //     lpParam     - Specified parameter.
  394. // Returns:
  395. //     Size of the control.
  396. //-----------------------------------------------------------------------
  397. virtual CSize DrawSpecialControl(CDC* pDC, XTPSpecialControl controlType, CXTPControl* pButton, CXTPCommandBar* pBar, BOOL bDraw, LPVOID lpParam);
  398. //-----------------------------------------------------------------------
  399. // Summary:
  400. //     This method is called to retrieve the command bar's borders.
  401. // Parameters:
  402. //     pBar - Points to a CXTPCommandBar object that the borders need to get.
  403. // Returns:
  404. //     Borders of the command bar.
  405. //-----------------------------------------------------------------------
  406. virtual CRect GetCommandBarBorders(CXTPCommandBar* pBar);
  407. //-----------------------------------------------------------------------
  408. // Summary:
  409. //     This method is called to draw a tear-off gripper of Popup Bar.
  410. // Parameters:
  411. //     pDC       - Pointer to a valid device context
  412. //     rcGripper - Bounding rectangle of the gripper.
  413. //     bSelected - True if the gripper is selected.
  414. //     bDraw     - TRUE to draw; FALSE to retrieve the size of the gripper.
  415. // Returns:
  416. //     Size of the gripper.
  417. //-----------------------------------------------------------------------
  418. virtual CSize DrawTearOffGripper(CDC* pDC, CRect rcGripper, BOOL bSelected, BOOL bDraw) = 0;
  419. virtual void DrawPopupResizeGripper(CDC* pDC, CRect rcGripper, int nFlags) = 0;
  420. //-----------------------------------------------------------------------
  421. // Summary:
  422. //     This method is called to draw the image of the control.
  423. // Parameters:
  424. //     pDC           - Pointer to a valid device context
  425. //     pt            - Position to draw.
  426. //     sz            - Size of the image.
  427. //     pImage        - Points to a CXTPImageManagerIcon object
  428. //     bSelected     - TRUE if the control is selected.
  429. //     bPressed      - TRUE if the control is pushed.
  430. //     bEnabled      - TRUE if the control is enabled.
  431. //     bChecked      - TRUE if the control is checked.
  432. //     bPopuped      - TRUE if the control is popuped.
  433. //     bToolBarImage - TRUE if it is a toolbar image.
  434. //-----------------------------------------------------------------------
  435. virtual void DrawImage(CDC* pDC, CPoint pt, CSize sz, CXTPImageManagerIcon* pImage, BOOL bSelected, BOOL bPressed, BOOL bEnabled = TRUE, BOOL bChecked = FALSE, BOOL bPopuped = FALSE, BOOL bToolBarImage = TRUE) = 0;
  436. //-----------------------------------------------------------------------
  437. // Summary:
  438. //     Call this member to draw gripper of dialog bar.
  439. // Parameters:
  440. //     pDC   - Points to a valid device context.
  441. //     pBar  - Dialog Bar pointer
  442. //     bDraw - TRUE to draw gripper, FALSE to calculate size.
  443. // Returns:
  444. //     Size of gripper to be drawn.
  445. //-----------------------------------------------------------------------
  446. virtual CSize DrawDialogBarGripper(CDC* pDC, CXTPDialogBar* pBar, BOOL bDraw) = 0;
  447. //-----------------------------------------------------------------------
  448. // Summary:
  449. //     Determines split button command rectangle
  450. // Parameters:
  451. //     pButton - Button to test
  452. // Returns:
  453. //     Bounding rectangle of command part of split button
  454. //-----------------------------------------------------------------------
  455. virtual CRect GetSplitButtonCommandRect(CXTPControl* pButton);
  456. //-----------------------------------------------------------------------
  457. // Summary:
  458. //     This method is called to set bounding region for popup bars
  459. // Parameters:
  460. //     pCommandBar - Pointer to popup bar which region need to set
  461. //-----------------------------------------------------------------------
  462. virtual void SetCommandBarRegion(CXTPCommandBar* pCommandBar);
  463. //-----------------------------------------------------------------------
  464. // Summary:
  465. //     This method is called to draw check box mark area
  466. // Parameters:
  467. //     pDC - Pointer to a valid device context
  468. //     rc - Bounding rectangle
  469. //     bDraw - TRUE to draw; FALSE to find size
  470. //     bSelected - TRUE if control is selected
  471. //     bPressed - TRUE if control is pressed
  472. //     bChecked - TRUE if control is checked
  473. //     bEnabled - TRUE if control is enabled
  474. // Returns: Size of check box mark
  475. //-----------------------------------------------------------------------
  476. virtual CSize DrawControlCheckBoxMark(CDC* pDC, CRect rc, BOOL bDraw, BOOL bSelected, BOOL bPressed, BOOL bChecked, BOOL bEnabled);
  477. //-----------------------------------------------------------------------
  478. // Summary:
  479. //     This method is called to draw radio button mark area
  480. // Parameters:
  481. //     pDC - Pointer to a valid device context
  482. //     rc - Bounding rectangle
  483. //     bDraw - TRUE to draw; FALSE to find size
  484. //     bSelected - TRUE if control is selected
  485. //     bPressed - TRUE if control is pressed
  486. //     bChecked - TRUE if control is checked
  487. //     bEnabled - TRUE if control is enabled
  488. // Returns: Size of radio button mark
  489. //-----------------------------------------------------------------------
  490. virtual CSize DrawControlRadioButtonMark(CDC* pDC, CRect rc, BOOL bDraw, BOOL bSelected, BOOL bPressed, BOOL bChecked, BOOL bEnabled);
  491. //-----------------------------------------------------------------------
  492. // Summary:
  493. //     This method is called to draw popup bar right gripper.
  494. // Parameters:
  495. //     pDC       - Points to a valid device context.
  496. //     xPos         - Specifies the logical x-coordinate of the upper-left corner of the rectangle.
  497. //     yPos         - Specifies the logical y-coordinate of the upper-left corner of the destination rectangle.
  498. //     cx        - Specifies the width of the rectangle.
  499. //     cy        - Specifies the height of the rectangle.
  500. //     bExpanded - TRUE if expanded.gripper.
  501. //-----------------------------------------------------------------------
  502. virtual void DrawPopupBarGripper(CDC* pDC, int xPos, int yPos, int cx, int cy, BOOL bExpanded = FALSE);
  503. public:
  504. //-----------------------------------------------------------------------
  505. // Summary:
  506. //     Creates new PaintManager pointer.
  507. // Parameters:
  508. //     paintTheme - Theme to be created.
  509. // Returns:
  510. //     Pointer to new CXTPPaintManager object.
  511. // Example:
  512. //     <code>pCommandBars->SetPaintManager(CXTPPaintManager::CreateTheme(xtpThemeOfficeXP);</code>
  513. //-----------------------------------------------------------------------
  514. static CXTPPaintManager* AFX_CDECL CreateTheme(XTPPaintTheme paintTheme);
  515. //-----------------------------------------------------------------------
  516. // Summary:
  517. //     Call this member to switch the visual theme of the Command Bars.
  518. // Parameters:
  519. //     paintTheme - Theme to be set. Can be any of the values listed in
  520. //                  the Remarks section.
  521. // Remarks:
  522. //     paintTheme can be one of following:
  523. //     * <b>xtpThemeOfficeXP</b> Enables Office XP theme.
  524. //     * <b>xtpThemeOffice2000</b> Enables Office 2000 theme.
  525. //     * <b>xtpThemeOffice2003</b> Enables Office 2003 theme.
  526. //     * <b>xtpThemeNativeWinXP</b> Enables Windows XP themes support.
  527. //     * <b>xtpThemeWhidbey</b> Enables Visual Studio 2005 theme.
  528. //-----------------------------------------------------------------------
  529. static void AFX_CDECL SetTheme(XTPPaintTheme paintTheme);
  530. //-----------------------------------------------------------------------
  531. // Summary:
  532. //     Call this member to set a custom theme.
  533. // Parameters:
  534. //     pTheme - theme to be set.
  535. //-----------------------------------------------------------------------
  536. static void AFX_CDECL SetCustomTheme(CXTPPaintManager* pTheme);
  537. //-----------------------------------------------------------------------
  538. // Summary:
  539. //     Call this member to get the current visual theme.
  540. // Returns:
  541. //     The current theme.
  542. //-----------------------------------------------------------------------
  543. XTPPaintTheme GetCurrentTheme() { return m_themeCurrent;}
  544. //-----------------------------------------------------------------------
  545. // Summary:
  546. //     Call this method to destroy a paint manager object.
  547. //-----------------------------------------------------------------------
  548. static void AFX_CDECL Done();
  549. //-----------------------------------------------------------------------
  550. // Summary:
  551. //     Retrieves the base theme of the manager.
  552. // Returns:
  553. //     Returns the base theme.
  554. //-----------------------------------------------------------------------
  555. virtual XTPPaintTheme BaseTheme() = 0;
  556. public:
  557. //-----------------------------------------------------------------------
  558. // Summary:
  559. //     Call this member to retrieve the font of the command bar
  560. // Parameters:
  561. //     pBar - Points to a CXTPCommandBar object
  562. //     bBold - TRUE to retrieve BOLD font
  563. // Returns:
  564. //     A pointer to a CFont object
  565. //-----------------------------------------------------------------------
  566. virtual CFont* GetCommandBarFont(CXTPCommandBar* pBar, BOOL bBold = FALSE);
  567. //-----------------------------------------------------------------------
  568. // Summary:
  569. //     Draws a triangle.
  570. // Parameters:
  571. //     pDC - Pointer to a valid device context
  572. //     pt0 - Specifies the logical coordinates of the first point.
  573. //     pt1 - Specifies the logical coordinates of the second point.
  574. //     pt2 - Specifies the logical coordinates of the third point.
  575. //     clr - Color to fill.
  576. //-----------------------------------------------------------------------
  577. static void AFX_CDECL Triangle(CDC* pDC, CPoint pt0, CPoint pt1, CPoint pt2, COLORREF clr);
  578. //-----------------------------------------------------------------------
  579. // Summary:
  580. //     Refreshes the fonts to use.
  581. //-----------------------------------------------------------------------
  582. virtual void UpdateFonts();
  583. //-----------------------------------------------------------------------
  584. // Summary:
  585. //     Refreshes the standard colors to use.
  586. //-----------------------------------------------------------------------
  587. virtual void UpdateColors();
  588. //-----------------------------------------------------------------------
  589. // Summary:
  590. //     Call this member to set command bars font.
  591. // Parameters:
  592. //     pLogFont         - New LOGFONT to use for text.
  593. //     bUseStandardFont - When calling SetCommandBarsFontIndirect, always
  594. //                        use FALSE, this will indicate that pLogFont
  595. //                        should be used as the new font.
  596. //-----------------------------------------------------------------------
  597. void SetCommandBarsFontIndirect(LOGFONT* pLogFont, BOOL bUseStandardFont = FALSE);
  598. //-----------------------------------------------------------------------
  599. // Summary:
  600. //     Returns the general font.
  601. // Returns:
  602. //     A Pointer to a CFont object
  603. //-----------------------------------------------------------------------
  604. CFont* GetRegularFont();
  605. //-----------------------------------------------------------------------
  606. // Summary:
  607. //     Returns the general bold font.
  608. // Returns:
  609. //     A Pointer to a CFont object
  610. //-----------------------------------------------------------------------
  611. CFont* GetRegularBoldFont();
  612. //-----------------------------------------------------------------------
  613. // Summary:
  614. //     Returns the icon font.
  615. // Returns:
  616. //     A pointer to a CFont object
  617. //-----------------------------------------------------------------------
  618. CFont* GetIconFont();
  619. //-----------------------------------------------------------------------
  620. // Summary:
  621. //     Call this method to retrieve caption of floating mini frame.
  622. // Returns:
  623. //     A pointer to a CFont object
  624. //-----------------------------------------------------------------------
  625. CFont* GetSmCaptionFont();
  626. //-----------------------------------------------------------------------
  627. // Summary:
  628. //     Call this method to use Tahoma font despite system metrics.
  629. // Parameters:
  630. //     bUseOfficeFont - TRUE to use office font.
  631. //-----------------------------------------------------------------------
  632. void UseOfficeFont(bool bUseOfficeFont);
  633. //-----------------------------------------------------------------------
  634. // Summary:
  635. //     This method returns the common controls height.
  636. // Returns:
  637. //     Controls height.
  638. //-----------------------------------------------------------------------
  639. int GetControlHeight() const;
  640. //-----------------------------------------------------------------------
  641. // Summary:
  642. //     Draws a rectangle.
  643. // Parameters:
  644. //     pDC    - Pointer to a valid device context
  645. //     rc     - Specifies the rectangle in logical units.
  646. //     nPen   - Specifies the color used to paint the rectangle.
  647. //     nBrush - Specifies the color used to fill the rectangle.
  648. //-----------------------------------------------------------------------
  649. void Rectangle(CDC* pDC, CRect rc, int nPen, int nBrush);
  650. //-----------------------------------------------------------------------
  651. // Summary:
  652. //     Call this member function to draw a three-dimensional rectangle.
  653. // Parameters:
  654. //     pDC          - Pointer to a valid device context
  655. //     rc           - Specifies the rectangle in logical units.
  656. //     nTopLeft     - Specifies the color of the top and left sides
  657. //                    of the three-dimensional rectangle.
  658. //     nBottomRight - Specifies the color of the bottom and right sides
  659. //                    of the three-dimensional rectangle.
  660. //-----------------------------------------------------------------------
  661. void Draw3dRect(CDC* pDC, CRect rc, int nTopLeft, int nBottomRight);
  662. //-----------------------------------------------------------------------
  663. // Summary:
  664. //     Call this member function to draw a check mark.
  665. // Parameters:
  666. //     pDC        - Pointer to a valid device context
  667. //     rcCheck    - Specifies the rectangle in logical units.
  668. //     clr        - Color to fill.
  669. //-----------------------------------------------------------------------
  670. virtual void DrawPopupBarCheckMark(CDC* pDC, CRect rcCheck, BOOL bEnabled, COLORREF clr);
  671. void DrawCheckMark(CDC* pDC, CRect rcCheck, COLORREF clr = 0) {
  672. DrawPopupBarCheckMark(pDC, rcCheck, TRUE, clr);
  673. }
  674. //-----------------------------------------------------------------------
  675. // Summary:
  676. //     Call this member function to draw a radio button.
  677. // Parameters:
  678. //     pDC        - Pointer to a valid device context
  679. //     rcCheck    - Specifies the rectangle in logical units.
  680. //     clr        - Color to fill.
  681. //-----------------------------------------------------------------------
  682. virtual void DrawPopupBarRadioMark(CDC* pDC, CRect rcCheck, BOOL bEnabled, COLORREF clr);
  683. //-----------------------------------------------------------------------
  684. // Summary:
  685. //     Call this member function to draw a combo box expand symbol
  686. // Parameters:
  687. //     pDC        - Pointer to a valid device context
  688. //     rc    - Specifies the rectangle in logical units.
  689. //     clr        - Color to fill.
  690. //-----------------------------------------------------------------------
  691. virtual void DrawComboExpandMark(CDC* pDC, CRect rc, COLORREF clr);
  692. //-----------------------------------------------------------------------
  693. // Summary:
  694. //     Draws a line.
  695. // Parameters:
  696. //     pDC  - Pointer to a valid device context
  697. //     p0  - Specifies the logical coordinates of the start position.
  698. //     p1  - Specifies the logical coordinates of the endpoint for the line.
  699. //     x0   - Specifies the logical x-coordinate of the start position.
  700. //     y0   - Specifies the logical y-coordinate of the start position.
  701. //     x1   - Specifies the logical x-coordinate of the endpoint for the line.
  702. //     y1   - Specifies the logical y-coordinate of the endpoint for the line.
  703. //     nPen - Specifies the color used to paint the line.
  704. //     clrPen - Specifies the color used to paint the line.
  705. //-----------------------------------------------------------------------
  706. void Line(CDC* pDC, CPoint p0, CPoint p1);
  707. void Line(CDC* pDC, int x0, int y0, int x1, int y1, int nPen); //<combine CXTPPaintManager::Line@CDC*@CPoint@CPoint>
  708. void HorizontalLine(CDC* pDC, int x0, int y0, int x1, COLORREF clrPen); //<combine CXTPPaintManager::Line@CDC*@CPoint@CPoint>
  709. void VerticalLine(CDC* pDC, int x0, int y0, int y1, COLORREF clrPen); //<combine CXTPPaintManager::Line@CDC*@CPoint@CPoint>
  710. //-----------------------------------------------------------------------
  711. // Summary:
  712. //     This member function is called to draw a split button expand symbol
  713. // Parameters:
  714. //     pDC         - Pointer to a valid device context
  715. //     pControl    - Points to a CXTPControl object
  716. //     pt          - Position of expand symbol
  717. //     bSelected   - TRUE if the control is selected.
  718. //     bPopuped    - TRUE if the control is popuped.
  719. //     bEnabled    - TRUE if the control is enabled.
  720. //     bVert       - TRUE if control is vertical
  721. //-----------------------------------------------------------------------
  722. virtual void DrawDropDownGlyph(CDC* pDC, CXTPControl* pControl, CPoint pt, BOOL bSelected, BOOL bPopuped, BOOL bEnabled, BOOL bVert);
  723. //-----------------------------------------------------------------------
  724. // Summary:
  725. //     Sets the pixel at the point.
  726. // Parameters:
  727. //     pDC  - Pointer to a valid device context
  728. //     xPos    - Specifies the logical x-coordinate of the point to be set.
  729. //     yPos    - Specifies the logical y-coordinate of the point to be set.
  730. //     nPen -  Specifies the color used to paint the point
  731. //-----------------------------------------------------------------------
  732. void Pixel(CDC* pDC, int xPos, int yPos, int nPen);
  733. // -------------------------------------------------------------------------
  734. // Summary:
  735. //     Gradient fills the rectangle.
  736. // Parameters:
  737. //     pDC :         Pointer to a valid device context
  738. //     lpRect :      Specifies the rectangle in logical units.
  739. //     crFrom :      Start color.
  740. //     crTo :        Endpoint color.
  741. //     bHorz :       TRUE to fill horizontally.
  742. //     lpRectClip :  Pointer to a RECT structure that contains a clipping
  743. //                   rectangle. This parameter is optional and may be set to
  744. //                   NULL.
  745. // -------------------------------------------------------------------------
  746. void GradientFill(CDC* pDC, LPRECT lpRect, COLORREF crFrom, COLORREF crTo, BOOL bHorz, LPCRECT lpRectClip = NULL);
  747. //-----------------------------------------------------------------------
  748. // Summary:
  749. //     Retrieves specific icon's options.
  750. // See Also: XTP_COMMANDBARS_ICONSINFO
  751. //-----------------------------------------------------------------------
  752. XTP_COMMANDBARS_ICONSINFO* GetIconsInfo();
  753. //////////////////////////////////////////////////////////////////////////
  754. /// Animation Routines
  755. //-----------------------------------------------------------------------
  756. // Summary:
  757. //     This method is called to animate the PopupBar.
  758. // Parameters:
  759. //     pDestDC       - Pointer to device context you must draw to.
  760. //     pSrcDC        - Device context that contains the bitmap you must
  761. //                     take.
  762. //     rc            - Bounding rectangle.
  763. //     animationType - Type of animation to perform.
  764. // See Also: SetAnimationDelay
  765. //-----------------------------------------------------------------------
  766. virtual void Animate(CDC* pDestDC, CDC* pSrcDC, CRect rc, XTPAnimationType animationType);
  767. //-----------------------------------------------------------------------
  768. // Summary:
  769. //     This method is called to animate the expanding process.
  770. // Parameters:
  771. //     pCommandBar - Command bar to animate.
  772. //     pDestDC     - Pointer to device context you must draw to.
  773. //     pSrcDC      - Device context that contains the bitmap you must
  774. //                   take.
  775. //     bExpandDown - TRUE to animate expanding top-to-bottom; FALSE to animate  bottom-to-top.
  776. //-----------------------------------------------------------------------
  777. virtual void AnimateExpanding(CXTPCommandBar* pCommandBar, CDC* pDestDC, CDC* pSrcDC, BOOL bExpandDown);
  778. //-----------------------------------------------------------------------
  779. // Summary:
  780. //     Call this method to set animation delay.
  781. // Parameters:
  782. //     nAnimationSteps - Number of steps to take during animation.
  783. //     nAnimationTime  - Amount of time to rest, in milliseconds, between
  784. //                       each step.
  785. //-----------------------------------------------------------------------
  786. void SetAnimationDelay(int nAnimationSteps, int nAnimationTime);
  787. //-----------------------------------------------------------------------
  788. // Summary:
  789. //     This function retrieves the current color of the specified XP
  790. //     display element. Display elements are the parts of a window
  791. //     and the display that appear on the system display screen.
  792. //     The function returns the red, green, blue (RGB) color value
  793. //     of the given element.  To provide a consistent look to all
  794. //     Windows applications, the operating system provides and
  795. //     maintains global settings that define the colors of various
  796. //     aspects of the display. These settings as a group are sometimes
  797. //     referred to as a "color scheme." To view the current color
  798. //     settings, click Control Panel, double-click the Display icon,
  799. //     and then click the "Appearance" tab.
  800. // Parameters:
  801. //     nIndex - Specifies the display element whose color is to be
  802. //              retrieved.  This parameter can be one of the
  803. //              following values displayed in the table below:
  804. // Remarks:
  805. //     <TABLE>
  806. //     <b>Constant</b>                   <b>Value</b>  <b>Description</b>
  807. //     --------------------------------  ============  ------------------------------------------------------------
  808. //     COLOR_SCROLLBAR                   0             Scroll bar color
  809. //     COLOR_BACKGROUND                  1             Desktop color
  810. //     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.
  811. //     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.
  812. //     COLOR_MENU                        4             Menu background color
  813. //     COLOR_WINDOW                      5             Window background color
  814. //     COLOR_WINDOWFRAME                 6             Window frame color
  815. //     COLOR_MENUTEXT                    7             Color of text on menus
  816. //     COLOR_WINDOWTEXT                  8             Color of text in windows
  817. //     COLOR_CAPTIONTEXT                 9             Color of text in caption, size box, and scroll arrow
  818. //     COLOR_ACTIVEBORDER                10            Border color of active window
  819. //     COLOR_INACTIVEBORDER              11            Border color of inactive window
  820. //     COLOR_APPWORKSPACE                12            Background color of multiple-document interface (MDI) applications
  821. //     COLOR_HIGHLIGHT                   13            Background color of items selected in a control
  822. //     COLOR_HIGHLIGHTTEXT               14            Text color of items selected in a control
  823. //     COLOR_BTNFACE                     15            Face color for three-dimensional display elements and for dialog box backgrounds.
  824. //     COLOR_BTNSHADOW                   16            Color of shading on the edge of command buttons
  825. //     COLOR_GRAYTEXT                    17            Grayed (disabled) text
  826. //     COLOR_BTNTEXT                     18            Text color on push buttons
  827. //     COLOR_INACTIVECAPTIONTEXT         19            Color of text in an inactive caption
  828. //     COLOR_BTNHIGHLIGHT                20            Highlight color for 3-D display elements
  829. //     COLOR_3DDKSHADOW                  21            Darkest shadow color for 3-D display elements
  830. //     COLOR_3DLIGHT                     22            Second lightest 3-D color after 3DHighlight, Light color for three-dimensional display elements (for edges facing the light source.)
  831. //     COLOR_INFOTEXT                    23            Color of text in ToolTips
  832. //     COLOR_INFOBK                      24            Background color of ToolTips
  833. //     COLOR_HOTLIGHT                    26            Color for a hot-tracked item. Single clicking a hot-tracked item executes the item.
  834. //     COLOR_GRADIENTACTIVECAPTION       27            Right side color in the color gradient of an active window's title bar. COLOR_ACTIVECAPTION specifies the left side color.
  835. //     COLOR_GRADIENTINACTIVECAPTION     28            Right side color in the color gradient of an inactive window's title bar. COLOR_INACTIVECAPTION specifies the left side color.
  836. //     XPCOLOR_TOOLBAR_FACE              30            XP toolbar background color.
  837. //     XPCOLOR_HIGHLIGHT                 31            XP menu item selected color.
  838. //     XPCOLOR_HIGHLIGHT_BORDER          32            XP menu item selected border color.
  839. //     XPCOLOR_HIGHLIGHT_PUSHED          33            XP menu item pushed color.
  840. //     XPCOLOR_HIGHLIGHT_CHECKED         36            XP menu item checked color.
  841. //     XPCOLOR_HIGHLIGHT_CHECKED_BORDER  37            An RGB value that represents the XP menu item checked border color.
  842. //     XPCOLOR_ICONSHADDOW               34            XP menu item icon shadow.
  843. //     XPCOLOR_GRAYTEXT                  35            XP menu item disabled text color.
  844. //     XPCOLOR_TOOLBAR_GRIPPER           38            XP toolbar gripper color.
  845. //     XPCOLOR_SEPARATOR                 39            XP toolbar separator color.
  846. //     XPCOLOR_DISABLED                  40            XP menu icon disabled color.
  847. //     XPCOLOR_MENUBAR_FACE              41            XP menu item text background color.
  848. //     XPCOLOR_MENUBAR_EXPANDED          42            XP hidden menu commands background color.
  849. //     XPCOLOR_MENUBAR_BORDER            43            XP menu border color.
  850. //     XPCOLOR_MENUBAR_TEXT              44            XP menu item text color.
  851. //     XPCOLOR_HIGHLIGHT_TEXT            45            XP menu item selected text color.
  852. //     XPCOLOR_TOOLBAR_TEXT              46            XP toolbar text color.
  853. //     XPCOLOR_PUSHED_TEXT               47            XP toolbar pushed text color.
  854. //     XPCOLOR_TAB_INACTIVE_BACK         48            XP inactive tab background color.
  855. //     XPCOLOR_TAB_INACTIVE_TEXT         49            XP inactive tab text color.
  856. //     XPCOLOR_HIGHLIGHT_PUSHED_BORDER   50            An RGB value that represents the XP border color for pushed in 3D elements.
  857. //     XPCOLOR_CHECKED_TEXT              45            XP color for text displayed in a checked button.
  858. //     XPCOLOR_3DFACE                    51            XP face color for three- dimensional display elements and for dialog box backgrounds.
  859. //     XPCOLOR_3DSHADOW                  52            XP shadow color for three-dimensional display elements (for edges facing away from the light source).
  860. //     XPCOLOR_EDITCTRLBORDER            53            XP color for the border color of edit controls.
  861. //     XPCOLOR_FRAME                     54            Office 2003 frame color.
  862. //     XPCOLOR_SPLITTER_FACE             55            XP splitter face color.
  863. //     XPCOLOR_LABEL                     56            Color for label control (xtpControlLabel)
  864. //     XPCOLOR_STATICFRAME               57            WinXP Static frame color
  865. //     </TABLE>
  866. // Returns:
  867. //     The red, green, blue (RGB) color value of the given element.
  868. //-----------------------------------------------------------------------
  869. COLORREF GetXtremeColor(UINT nIndex);
  870. //-----------------------------------------------------------------------
  871. // Summary:
  872. //     Call this member to set the colors for each element to the
  873. //     color in the specified color array.
  874. // Parameters:
  875. //     cElements    - Number of elements in array.
  876. //     lpaElements  - Array of elements.
  877. //     lpaRgbValues - Array of RGB values.
  878. //-----------------------------------------------------------------------
  879. void SetColors(int cElements, CONST INT* lpaElements, CONST COLORREF* lpaRgbValues);
  880. public:
  881. //-----------------------------------------------------------------------
  882. // Summary:
  883. //     This method is called to draw control text
  884. // Parameters:
  885. //      pDC - Pointer to valid device context
  886. //      pControl - Pointer to control to draw
  887. //      rcText - Bounding rectangle of the text
  888. //      bDraw - TRUE to draw text; FALSE to calculate size
  889. //      bVert - TRUE if text is vertical
  890. //      bCentered - TRUE if text is centered
  891. //      bTriangled - TRUE if triangle drawn
  892. // Returns: Size of the text
  893. //-----------------------------------------------------------------------
  894. CSize DrawControlText(CDC* pDC, CXTPControl* pControl, CRect rcText, BOOL bDraw, BOOL bVert, BOOL bCentered, BOOL bTriangled);
  895. //-----------------------------------------------------------------------
  896. // Summary:
  897. //     Determines if the font exists in the system.
  898. // Parameters:
  899. //     lpszFaceName - Font needed to test.
  900. // Returns:
  901. //     TRUE if font exists; otherwise returns FALSE
  902. //-----------------------------------------------------------------------
  903. static BOOL AFX_CDECL FontExists(LPCTSTR lpszFaceName);
  904. //-----------------------------------------------------------------------
  905. // Summary:
  906. //     This member function will search a string, strip off the mnemonic
  907. //     '&', and reformat the string.
  908. // Parameters:
  909. //     strClear - Text needed to strip.
  910. //-----------------------------------------------------------------------
  911. static void AFX_CDECL StripMnemonics(CString& strClear);
  912. public:
  913. //-----------------------------------------------------------------------
  914. // Summary:
  915. //     This method is called to prepare caption fro Right-To-Left draw
  916. // Parameters:
  917. //     strCaption - Caption to modify
  918. //-----------------------------------------------------------------------
  919. virtual void UpdateRTLCaption(CString& strCaption);
  920. //-----------------------------------------------------------------------
  921. // Summary:
  922. //     Call this member function to determine the current Windows XP
  923. //     theme in use.
  924. // Returns:
  925. //     A XTPCurrentSystemTheme enumeration that represents the
  926. //     current Windows theme in use, can be one of the following
  927. //     values:
  928. //     * <b>xtpSystemThemeUnknown</b> Indicates no known theme in use
  929. //     * <b>xtpSystemThemeBlue</b> Indicates blue theme in use
  930. //     * <b>xtpSystemThemeOlive</b> Indicates olive theme in use
  931. //     * <b>xtpSystemThemeSilver</b> Indicates silver theme in use
  932. // See Also: SetLunaTheme, RefreshLunaColors
  933. //-----------------------------------------------------------------------
  934. XTPCurrentSystemTheme GetCurrentSystemTheme();
  935. //-----------------------------------------------------------------------
  936. // Summary:
  937. //     Call this method to force system theme.
  938. // Parameters:
  939. //     systemTheme - theme to use. Can be any of the values listed in the Remarks section.
  940. // Remarks:
  941. //     theme can be one of the following:
  942. //     * <b>xtpSystemThemeUnknown</b> Disables <i>luna</i> theme support.
  943. //     * <b>xtpSystemThemeBlue</b> Enables blue theme
  944. //     * <b>xtpSystemThemeOlive</b> Enables olive theme
  945. //     * <b>xtpSystemThemeSilver</b> Enables silver theme
  946. //-----------------------------------------------------------------------
  947. void SetLunaTheme(XTPCurrentSystemTheme systemTheme);
  948. //-----------------------------------------------------------------------
  949. // Summary:
  950. //     Calculates gripper of popup bar.
  951. // Parameters:
  952. //     pBar - Popup bar.
  953. // Returns:
  954. //     Width of gripper to draw.
  955. //-----------------------------------------------------------------------
  956. virtual int GetPopupBarGripperWidth(CXTPCommandBar* pBar);
  957. //-----------------------------------------------------------------------
  958. // Summary:
  959. //     Returns paint manager used to draw galleries
  960. //-----------------------------------------------------------------------
  961. CXTPControlGalleryPaintManager* GetGalleryPaintManager() const;
  962. CXTPSliderPaintManager* GetSliderPaintManager() const;
  963. CXTPProgressPaintManager* GetProgressPaintManager() const;
  964. CXTPShadowManager* GetShadowManager() const;
  965. //{{AFX_CODEJOCK_PRIVATE
  966. public:
  967. // deprecated.
  968. void ShowKeyboardCues(BOOL bShow);
  969. CFont* GetIconBoldFont()
  970. {
  971. return &m_fontIconBold;
  972. }
  973. virtual void FillWorkspace(CDC* pDC, CRect rc, CRect rcExclude);
  974. virtual void DrawKeyboardTip(CDC* pDC, CXTPCommandBarKeyboardTip* pWnd, BOOL bSetRegion);
  975. CSize GetAutoIconSize(BOOL bLarge) const;
  976. static void AFX_CDECL FillCompositeAlpha(CDC* pDC, CRect rc);
  977. _XTP_DEPRECATE("This function or variable is no longer available. Please use 'DrawControlText' instead")
  978. CSize DrawTextEx(CDC*, CString, CRect, BOOL, BOOL, BOOL, BOOL, BOOL = FALSE, BOOL = FALSE) {
  979. return CSize(0, 0);
  980. }
  981. int GetSplitDropDownHeight() const;
  982. void AlphaEllipse(CDC* pDC, CRect rc, COLORREF clrBorder, COLORREF clrFace);
  983. static void AFX_CDECL DrawTextApi(CDC* pDC, const CString& str, LPRECT lpRect, UINT format, BOOL bComposited);
  984. protected:
  985. virtual BOOL IsFlatToolBar(CXTPCommandBar* pCommandBar);
  986. void AlphaBlendU(PBYTE pDest, PBYTE pSrcBack, int cx, int cy, PBYTE pSrc, BYTE byAlpha);
  987. void _DrawCheckMark(CDC* pDC, CRect rcCheck, COLORREF clr = 0, BOOL bLayoutRTL = FALSE);
  988. CSize DrawControlText2(CDC* pDC, CXTPControl* pControl, CRect rcText, BOOL bDraw, BOOL bVert, BOOL bTrangled);
  989. void DrawControlText3(CDC* pDC, CXTPControl* pControl, const CString& str, const CString& strClear, CRect rcText, BOOL bVert, BOOL bCentered);
  990. void SplitString(const CString& str, CString& strFirstRow, CString& strSecondRow);
  991. CSize DrawControlText(CDC* pDC, CXTPControl* pControl, CRect rcText, BOOL bDraw, BOOL bTriangled, CSize szButton, BOOL bDrawImage);
  992. CSize GetControlSize(CXTPControl* pControl, CSize sz, BOOL bVert);
  993. virtual CSize GetPopupBarImageSize(CXTPCommandBar* pBar);
  994. virtual void DrawPopupBarText(CDC* pDC, const CString& strText, CRect& rcText, UINT nFlags, BOOL bDraw, BOOL bSelected, BOOL bEnabled);
  995. CSize GetIconSize(CXTPControl* pButton);
  996. //}}AFX_CODEJOCK_PRIVATE
  997. public:
  998. COLORREF m_clrStatusTextColor;          // Status bar test color
  999. COLORREF m_clrMessageBarText;
  1000. CXTPPaintManagerColorGradient m_clrDisabledIcon;    // Disabled icons color
  1001. CXTPPaintManagerColor m_clrFloatingGripper;     // Gripper color of floating toolbar.
  1002. CXTPPaintManagerColor m_clrFloatingGripperText; // Gripper text color of floating toolbar.
  1003. BOOL m_bThickCheckMark;             // TRUE to draw thick check mark
  1004. BOOL m_bShowShadow;                 // TRUE to show shadow
  1005. BOOL m_bThemedStatusBar;            // TRUE to draw status bar using WinXP theme.
  1006. BOOL m_bThemedCheckBox;             // TRUE to draw check box using WinXP theme.
  1007. BOOL m_bClearTypeTextQuality;       // TRUE to enable ClearType text for the font.
  1008. BOOL m_bResourceCharSet;            // TRUE to use font CharSet from loaded resources.
  1009. BOOL m_bFlatToolBar;                // TRUE to draw toolbars flat
  1010. BOOL m_bFlatMenuBar;                // TRUE to draw menubar flat
  1011. int m_nPopupBarTextPadding;         // Distance between gripper and control text.
  1012. BOOL m_bSelectImageInPopupBar;      // TRUE to select image as in explorer theme.
  1013. BOOL m_bEnableAnimation;            // TRUE to enable animation for all toolbars
  1014. BOOL m_bOffice2007Padding;          // TRUE if Office2007 metrics used
  1015. BOOL m_bOffsetPopupLabelText;       // TRUE if labels in popups drawn with offset
  1016. BOOL m_bWrapCaptionBelowText;       // Wrap text for xtpButtonIconAndCaptionBelow buttons
  1017. CXTPPaintManagerFont m_fontSmCaption;   // Small caption font.
  1018. CXTPPaintManagerFont m_fontIcon;        // Icon font.
  1019. CXTPPaintManagerFont m_fontIconBold;    // Icon bold font.
  1020. CXTPPaintManagerFont m_fontToolTip;     // Tooltip font
  1021. int   m_nSplitButtonDropDownWidth;      // Split button drop down width in toolbars
  1022. int   m_nSplitButtonPopupWidth;         // Split button drop down width in popups
  1023. BOOL  m_bAutoResizeIcons;               // TRUE to automatically resize icons using current DPI
  1024. int m_nStatusBarMinHeight;
  1025. CXTPControlGalleryPaintManager* m_pGalleryPaintManager;         // Gallery paint manager
  1026. CXTPSliderPaintManager* m_pSliderPaintManager;
  1027. CXTPProgressPaintManager* m_pProgressPaintManager;
  1028. PVOID m_pfnSetLayeredWindowAttributes;  // point to Transparency proc in USER32.dll module
  1029. CRect m_rcStatusBarBorder;
  1030. protected:
  1031. CFont m_fontRegular;                // Regular font.
  1032. CFont m_fontRegularBold;            // Regular bold font.
  1033. CFont m_fontVert;                   // Vertical font.
  1034. CFont m_fontVertBold;               // Vertical font.
  1035. int   m_nTextHeight;                // Text height of the regular font.
  1036. int   m_nEditHeight;                // Edit text height
  1037. BOOL  m_bUseOfficeFont;             // TRUE to use Tahoma font.
  1038. CString m_strOfficeFont;            // Office font
  1039. BOOL  m_bUseStandardFont;           // TRUE to use system font.
  1040. BOOL  m_bEmbossedDisabledText;      // TRUE to draw disabled text embossed
  1041. CXTPWinThemeWrapper m_themeStatusBar;   // StatusBar theme helper.
  1042. CXTPWinThemeWrapper m_themeButton;      // Buttons theme helper.
  1043. XTPPaintTheme m_themeCurrent;           // Current theme.
  1044. static CXTPPaintManager* s_pInstance;   // Instance of the manager.
  1045. XTP_COMMANDBARS_ICONSINFO m_iconsInfo;  // Specific icons options.
  1046. int m_nAnimationSteps;                  // Steps of the animation.
  1047. int m_nAnimationTime;                   // Time of the animation.
  1048. BOOL m_bShowKeyboardCues;               // TRUE to show keyboard cues - deprecated.
  1049. CXTPPaintManagerColor m_arrColor[XPCOLOR_LAST + 1];  // Self colors array.
  1050. XTPCurrentSystemTheme m_systemTheme;   // Current system theme.
  1051. CXTPShadowManager* m_pShadowManager;
  1052. protected:
  1053. //-----------------------------------------------------------------------
  1054. // Summary:
  1055. //     Constructs a CXTPPaintManager object
  1056. //-----------------------------------------------------------------------
  1057. CXTPPaintManager();
  1058. //-----------------------------------------------------------------------
  1059. // Summary:
  1060. //     Destroys a CXTPPaintManager object, handles cleanup and deallocation.
  1061. //-----------------------------------------------------------------------
  1062. virtual ~CXTPPaintManager();
  1063. public:
  1064. //---------------------------------------------------------------------------
  1065. // Summary:
  1066. //     CLogFont is a self initializing LOGFONT derived class. It
  1067. //     will allow you to create or copy a LOGFONT object, and defines the
  1068. //     attributes of a font.
  1069. //---------------------------------------------------------------------------
  1070. struct _XTP_EXT_CLASS CLogFont : public LOGFONT
  1071. {
  1072. //-----------------------------------------------------------------------
  1073. // Summary:
  1074. //     Constructs an CLogFont object.
  1075. //-----------------------------------------------------------------------
  1076. CLogFont();
  1077. };
  1078. //---------------------------------------------------------------------------
  1079. // Summary:
  1080. //     CNonClientMetrics is a self initializing NONCLIENTMETRICS derived
  1081. //     class. It contains the scalable metrics associated with the
  1082. //     non-client area of a non-minimized window.  This class is used by
  1083. //     the SPI_GETNONCLIENTMETRICS and SPI_SETNONCLIENTMETRICS actions of
  1084. //     SystemParametersInfo.
  1085. //---------------------------------------------------------------------------
  1086. struct _XTP_EXT_CLASS CNonClientMetrics : public NONCLIENTMETRICS
  1087. {
  1088. //-----------------------------------------------------------------------
  1089. // Summary:
  1090. //     Constructs a CNonClientMetrics object
  1091. //-----------------------------------------------------------------------
  1092. CNonClientMetrics();
  1093. };
  1094. friend class CCommandBarsCtrl;
  1095. friend class CXTPCommandBarsOptions;
  1096. friend class CXTPCommandBars;
  1097. };
  1098. //---------------------------------------------------------------------------
  1099. // Summary:
  1100. //     Call this function to access CXTPPaintManager members.
  1101. //     Since this class is designed as a single instance object you can
  1102. //     only access version info through this method. You <b>cannot</b>
  1103. //     directly instantiate an object of type CXTPPaintManager.
  1104. // Example:
  1105. //     <code>XTPPaintManager()->GetIconsInfo()->bIconsWithShadow = FALSE;</code>
  1106. //---------------------------------------------------------------------------
  1107. CXTPPaintManager* XTPPaintManager();
  1108. AFX_INLINE CXTPPaintManager* XTPPaintManager() {
  1109. if (CXTPPaintManager::s_pInstance == NULL)
  1110. {
  1111. CXTPPaintManager::SetTheme(xtpThemeOffice2000);
  1112. }
  1113. return CXTPPaintManager::s_pInstance;
  1114. }
  1115. //===========================================================================
  1116. // Summary:
  1117. //     The CXTPOfficeTheme class is used to enable an Office XP style theme for Command Bars
  1118. // See Also: CXTPPaintManager::SetTheme
  1119. //===========================================================================
  1120. class _XTP_EXT_CLASS CXTPOfficeTheme : public CXTPPaintManager
  1121. {
  1122. public:
  1123. //-----------------------------------------------------------------------
  1124. // Summary:
  1125. //     Constructs a CXTPOfficeTheme object.
  1126. //-----------------------------------------------------------------------
  1127. CXTPOfficeTheme();
  1128. //-----------------------------------------------------------------------
  1129. // Summary:
  1130. //     This method is called to fill the command bar's face.
  1131. // Parameters:
  1132. //     pDC  - Pointer to a valid device context
  1133. //     pBar - Points to a CXTPCommandBar object to draw.
  1134. //-----------------------------------------------------------------------
  1135. virtual void FillCommandBarEntry(CDC* pDC, CXTPCommandBar* pBar);
  1136. //-----------------------------------------------------------------------
  1137. // Summary:
  1138. //     This method retrieves buttons text color
  1139. // Parameters:
  1140. //     bSelected   - TRUE if the control is selected.
  1141. //     bPressed    - TRUE if the control is pushed.
  1142. //     bEnabled    - TRUE if the control is enabled.
  1143. //     bChecked    - TRUE if the control is checked.
  1144. //     bPopuped    - TRUE if the control is popuped.
  1145. //     barType     - Parent's bar type
  1146. //     barPosition - Parent's bar position.
  1147. //-----------------------------------------------------------------------
  1148. virtual COLORREF GetRectangleTextColor(BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition);
  1149. //-----------------------------------------------------------------------
  1150. // Summary:
  1151. //     This method is called to draw the command bar's gripper.
  1152. // Parameters:
  1153. //     pDC   - Pointer to a valid device context
  1154. //     pBar  - Points to a CXTPCommandBar object
  1155. //     bDraw - TRUE to draw; FALSE to retrieve the size of the gripper.
  1156. // Returns:
  1157. //     Size of the gripper.
  1158. //-----------------------------------------------------------------------
  1159. virtual CSize DrawCommandBarGripper(CDC* pDC, CXTPCommandBar* pBar, BOOL bDraw = TRUE);
  1160. //-----------------------------------------------------------------------
  1161. // Summary:
  1162. //     This method is called to draw a command bar's separator.
  1163. // Parameters:
  1164. //     pDC      - Pointer to a valid device context
  1165. //     pBar     - Points to a CXTPCommandBar object
  1166. //     pControl - Points to a CXTPControl object
  1167. //     bDraw    - TRUE to draw; FALSE to retrieve the size of the separator.
  1168. // Returns:
  1169. //     This method is called to draw a command bar's separator.
  1170. //-----------------------------------------------------------------------
  1171. virtual CSize DrawCommandBarSeparator(CDC* pDC, CXTPCommandBar* pBar, CXTPControl* pControl, BOOL bDraw = TRUE);
  1172. //-----------------------------------------------------------------------
  1173. // Summary:
  1174. //     This method is called to draw the control placed on the ListBox.
  1175. // Parameters:
  1176. //     pDC       - Pointer to a valid device context
  1177. //     pButton   - Points to a CXTPControl object
  1178. //     rc        - Bounding rectangle to draw.
  1179. //     bSelected - TRUE if the control is selected.
  1180. //     bDraw     - TRUE to draw; FALSE to retrieve the size of the control.
  1181. //     pCommandBars - CommandBars object which metrics need to use.
  1182. // Returns:
  1183. //     Size of the control.
  1184. //-----------------------------------------------------------------------
  1185. virtual CSize DrawListBoxControl(CDC* pDC, CXTPControl* pButton, CRect rc, BOOL bSelected, BOOL bDraw, CXTPCommandBars* pCommandBars = 0);
  1186. //-----------------------------------------------------------------------
  1187. // Summary:
  1188. //     This method is called to determine offset of popuped bar.
  1189. // Parameters:
  1190. //     rc       - Control's bounding rectangle.
  1191. //     pControl - Points to a CXTPControl object
  1192. //     bVertical - TRUE if control docked vertically.
  1193. //-----------------------------------------------------------------------
  1194. virtual void AdjustExcludeRect(CRect& rc, CXTPControl* pControl, BOOL bVertical);
  1195. //-----------------------------------------------------------------------
  1196. // Summary:
  1197. //     This method is called to draw a tear-off gripper of Popup Bar.
  1198. // Parameters:
  1199. //     pDC       - Pointer to a valid device context
  1200. //     rcGripper - Bounding rectangle of the gripper.
  1201. //     bSelected - True if the gripper is selected.
  1202. //     bDraw     - TRUE to draw; FALSE to retrieve the size of the gripper.
  1203. // Returns:
  1204. //     Size of the gripper.
  1205. //-----------------------------------------------------------------------
  1206. virtual CSize DrawTearOffGripper(CDC* pDC, CRect rcGripper, BOOL bSelected, BOOL bDraw);
  1207. virtual void DrawPopupResizeGripper(CDC* pDC, CRect rcGripper, int nFlags);
  1208. //-----------------------------------------------------------------------
  1209. // Summary:
  1210. //     Call this member to draw gripper of dialog bar.
  1211. // Parameters:
  1212. //     pDC   - Points to a valid device context.
  1213. //     pBar  - Dialog Bar pointer
  1214. //     bDraw - TRUE to draw gripper, FALSE to calculate size.
  1215. // Returns:
  1216. //     Size of gripper to be drawn.
  1217. //-----------------------------------------------------------------------
  1218. virtual CSize DrawDialogBarGripper(CDC* pDC, CXTPDialogBar* pBar, BOOL bDraw);
  1219. protected:
  1220. //-----------------------------------------------------------------------
  1221. // Summary:
  1222. //     This method is called to draw popup bar right gripper.
  1223. // Parameters:
  1224. //     pDC       - Points to a valid device context.
  1225. //     xPos         - Specifies the logical x-coordinate of the upper-left corner of the rectangle.
  1226. //     yPos         - Specifies the logical y-coordinate of the upper-left corner of the destination rectangle.
  1227. //     cx        - Specifies the width of the rectangle.
  1228. //     cy        - Specifies the height of the rectangle.
  1229. //     bExpanded - TRUE if expanded.gripper.
  1230. //-----------------------------------------------------------------------
  1231. virtual void DrawPopupBarGripper(CDC* pDC, int xPos, int yPos, int cx, int cy, BOOL bExpanded = FALSE);
  1232. //-----------------------------------------------------------------------
  1233. // Summary:
  1234. //     This method is called to draw the control placed on the PopupBar.
  1235. // Parameters:
  1236. //     pDC     - Pointer to a valid device context
  1237. //     pButton - Points to a CXTPControl object
  1238. //     bDraw   - TRUE to draw; FALSE to retrieve the size of the control.
  1239. // Returns:
  1240. //     Size of the control.
  1241. //-----------------------------------------------------------------------
  1242. virtual CSize DrawControlPopupParent(CDC* pDC, CXTPControl* pButton, BOOL bDraw);
  1243. //-----------------------------------------------------------------------
  1244. // Summary:
  1245. //     This method is called to fill the control's face
  1246. // Parameters:
  1247. //     pDC         - Pointer to a valid device context
  1248. //     rc          - Rectangle to draw.
  1249. //     bSelected   - TRUE if the control is selected.
  1250. //     bPressed    - TRUE if the control is pushed.
  1251. //     bEnabled    - TRUE if the control is enabled.
  1252. //     bChecked    - TRUE if the control is checked.
  1253. //     bPopuped    - TRUE if the control is popuped.
  1254. //     barType     - Parent's bar type
  1255. //     barPosition - Parent's bar position.
  1256. //-----------------------------------------------------------------------
  1257. virtual void DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition);
  1258. //-----------------------------------------------------------------------
  1259. // Summary:
  1260. //     This method is called to draw the image of the control.
  1261. // Parameters:
  1262. //     pDC           - Pointer to a valid device context
  1263. //     pt            - Position to draw.
  1264. //     sz            - Size of the image.
  1265. //     pImage        - Points to a CXTPImageManagerIcon object
  1266. //     bSelected     - TRUE if the control is selected.
  1267. //     bPressed      - TRUE if the control is pushed.
  1268. //     bEnabled      - TRUE if the control is enabled.
  1269. //     bChecked      - TRUE if the control is checked.
  1270. //     bPopuped      - TRUE if the control is popuped.
  1271. //     bToolBarImage - TRUE if it is a toolbar image.
  1272. //-----------------------------------------------------------------------
  1273. virtual void DrawImage(CDC* pDC, CPoint pt, CSize sz, CXTPImageManagerIcon* pImage, BOOL bSelected, BOOL bPressed, BOOL bEnabled = TRUE, BOOL bChecked = FALSE, BOOL bPopuped = FALSE, BOOL bToolBarImage = TRUE);
  1274. //-----------------------------------------------------------------------
  1275. // Summary:
  1276. //     This method is called to draw the control.
  1277. // Parameters:
  1278. //     pDC    - Pointer to a valid device context
  1279. //     bDraw  - TRUE to draw; FALSE to retrieve the size of the control.
  1280. //     pComboBox - CXTPControlComboBox pointer need to draw.
  1281. // Returns:
  1282. //     Size of the control.
  1283. //-----------------------------------------------------------------------
  1284. virtual CSize DrawControlComboBox(CDC* pDC, CXTPControlComboBox* pComboBox, BOOL bDraw);
  1285. //-----------------------------------------------------------------------
  1286. // Summary:
  1287. //     This method is called to draw the control.
  1288. // Parameters:
  1289. //     pDC   - Pointer to a valid device context
  1290. //     bDraw - TRUE to draw; FALSE to retrieve the size of the control.
  1291. //     pEdit - Edit control to draw.
  1292. // Returns:
  1293. //     Size of the control.
  1294. //-----------------------------------------------------------------------
  1295. virtual CSize DrawControlEdit(CDC* pDC, CXTPControlEdit* pEdit, BOOL bDraw);
  1296. //-----------------------------------------------------------------------
  1297. // Summary:
  1298. //     Draws intersect rectangle of popup bar and its control.
  1299. // Parameters:
  1300. //     pDC       - Points to a valid device context.
  1301. //     pPopupBar - Popup bar pointer.
  1302. //     clr       - COLORREF specifies RGB color value.
  1303. //-----------------------------------------------------------------------
  1304. void FillIntersectRect(CDC* pDC, CXTPPopupBar* pPopupBar, COLORREF clr);
  1305. //-----------------------------------------------------------------------
  1306. // Summary:
  1307. //     This method is called to draw frame of single cell of status bar.
  1308. // Parameters:
  1309. //     pDC - Points to a valid device context.
  1310. //     rc - CRect object specifying size of area.
  1311. //     pPane - The status bar pane need to draw
  1312. //     bGripperPane - TRUE if pane is last cell of status bar
  1313. //-----------------------------------------------------------------------
  1314. virtual void DrawStatusBarPaneBorder(CDC* pDC, CRect rc, CXTPStatusBarPane* pPane, BOOL bGripperPane);
  1315. virtual void DrawStatusBarPaneSeparator(CDC* pDC, CRect rc, CXTPStatusBarPane* pPane);
  1316. //-----------------------------------------------------------------------
  1317. // Summary:
  1318. //     Retrieves the base theme of the manager.
  1319. // Returns:
  1320. //     Returns the base theme.
  1321. //-----------------------------------------------------------------------
  1322. XTPPaintTheme BaseTheme() { return xtpThemeOfficeXP; }
  1323. //-----------------------------------------------------------------------
  1324. // Summary:
  1325. //     This method is called to draw the frame for the SplitButton
  1326. //     control
  1327. // Parameters:
  1328. //     pDC     - Pointer to a valid device context
  1329. //     pButton - Points to a CXTPControl object
  1330. //     rc      - Bounding rectangle to draw
  1331. //-----------------------------------------------------------------------
  1332. virtual void DrawSplitButtonFrame(CDC* pDC, CXTPControl* pButton, CRect rc);
  1333. //-----------------------------------------------------------------------
  1334. // Summary:
  1335. //     This method is called to draw check box mark area
  1336. // Parameters:
  1337. //     pDC - Pointer to a valid device context
  1338. //     rc - Bounding rectangle
  1339. //     bDraw - TRUE to draw; FALSE to find size
  1340. //     bSelected - TRUE if control is selected
  1341. //     bPressed - TRUE if control is pressed
  1342. //     bChecked - TRUE if control is checked
  1343. //     bEnabled - TRUE if control is enabled
  1344. // Returns: Size of check box mark
  1345. //-----------------------------------------------------------------------
  1346. virtual CSize DrawControlCheckBoxMark(CDC* pDC, CRect rc, BOOL bDraw, BOOL bSelected, BOOL bPressed, BOOL bChecked, BOOL bEnabled);
  1347. //-----------------------------------------------------------------------
  1348. // Summary:
  1349. //     This method is called to draw radio button mark area
  1350. // Parameters:
  1351. //     pDC - Pointer to a valid device context
  1352. //     rc - Bounding rectangle
  1353. //     bDraw - TRUE to draw; FALSE to find size
  1354. //     bSelected - TRUE if control is selected
  1355. //     bPressed - TRUE if control is pressed
  1356. //     bChecked - TRUE if control is checked
  1357. //     bEnabled - TRUE if control is enabled
  1358. // Returns: Size of radio button mark
  1359. //-----------------------------------------------------------------------
  1360. virtual CSize DrawControlRadioButtonMark(CDC* pDC, CRect rc, BOOL bDraw, BOOL bSelected, BOOL bPressed, BOOL bChecked, BOOL bEnabled);
  1361. protected:
  1362. //{{AFX_CODEJOCK_PRIVATE
  1363. virtual void DrawSplitButtonPopup(CDC* pDC, CXTPControl* pButton);
  1364. virtual void DrawControlPopupGlyph(CDC* pDC, CXTPControl* pButton);
  1365. virtual void FillPopupLabelEntry(CDC* pDC, CRect rc);
  1366. //}}AFX_CODEJOCK_PRIVATE
  1367. };
  1368. //===========================================================================
  1369. // Summary:
  1370. //     The CXTPDefaultTheme class is used to enable an Office 2000 style theme for Command Bars
  1371. // See Also: CXTPPaintManager::SetTheme
  1372. //===========================================================================
  1373. class _XTP_EXT_CLASS CXTPDefaultTheme : public CXTPPaintManager
  1374. {
  1375. public:
  1376. //-------------------------------------------------------------------------
  1377. // Summary:
  1378. //     Constructs a CXTPDefaultTheme object.
  1379. //-------------------------------------------------------------------------
  1380. CXTPDefaultTheme();
  1381. //-----------------------------------------------------------------------
  1382. // Summary:
  1383. //     This method is called to refresh the visual metrics of the manager.
  1384. //-----------------------------------------------------------------------
  1385. virtual void RefreshMetrics();
  1386. //-----------------------------------------------------------------------
  1387. // Summary:
  1388. //     This method is called to fill the command bar's face.
  1389. // Parameters:
  1390. //     pDC  - Pointer to a valid device context
  1391. //     pBar - Points to a CXTPCommandBar object to draw.
  1392. //-----------------------------------------------------------------------
  1393. virtual void FillCommandBarEntry(CDC* pDC, CXTPCommandBar* pBar);
  1394. //-----------------------------------------------------------------------
  1395. // Summary:
  1396. //     This method retrieves buttons text color
  1397. // Parameters:
  1398. //     bSelected   - TRUE if the control is selected.
  1399. //     bPressed    - TRUE if the control is pushed.
  1400. //     bEnabled    - TRUE if the control is enabled.
  1401. //     bChecked    - TRUE if the control is checked.
  1402. //     bPopuped    - TRUE if the control is popuped.
  1403. //     barType     - Parent's bar type
  1404. //     barPosition - Parent's bar position.
  1405. //-----------------------------------------------------------------------
  1406. virtual COLORREF GetRectangleTextColor(BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition);
  1407. //-----------------------------------------------------------------------
  1408. // Summary:
  1409. //     This method is called to draw the command bar's gripper.
  1410. // Parameters:
  1411. //     pDC   - Pointer to a valid device context
  1412. //     pBar  - Points to a CXTPCommandBar object
  1413. //     bDraw - TRUE to draw; FALSE to retrieve the size of the gripper.
  1414. // Returns:
  1415. //     Size of the gripper.
  1416. //-----------------------------------------------------------------------
  1417. virtual CSize DrawCommandBarGripper(CDC* pDC, CXTPCommandBar* pBar, BOOL bDraw = TRUE);
  1418. //-----------------------------------------------------------------------
  1419. // Summary:
  1420. //     This method is called to draw a command bar's separator.
  1421. // Parameters:
  1422. //     pDC      - Pointer to a valid device context
  1423. //     pBar     - Points to a CXTPCommandBar object
  1424. //     pControl - Points to a CXTPControl object
  1425. //     bDraw    - TRUE to draw; FALSE to retrieve the size of the separator.
  1426. // Returns:
  1427. //     This method is called to draw a command bar's separator.
  1428. //-----------------------------------------------------------------------
  1429. virtual CSize DrawCommandBarSeparator(CDC* pDC, CXTPCommandBar* pBar, CXTPControl* pControl, BOOL bDraw = TRUE);
  1430. //-----------------------------------------------------------------------
  1431. // Summary:
  1432. //     This method is called to determine offset of popuped bar.
  1433. // Parameters:
  1434. //     rc       - Control's bounding rectangle.
  1435. //     pControl - Points to a CXTPControl object
  1436. //     bVertical - TRUE if control docked vertically.
  1437. //-----------------------------------------------------------------------
  1438. virtual void AdjustExcludeRect(CRect& rc, CXTPControl* pControl, BOOL bVertical);
  1439. //-----------------------------------------------------------------------
  1440. // Summary:
  1441. //     This method is called to retrieve the command bar's borders.
  1442. // Parameters:
  1443. //     pBar - Points to a CXTPCommandBar object that the borders need to get.
  1444. // Returns:
  1445. //     Borders of the command bar.
  1446. //-----------------------------------------------------------------------
  1447. virtual CRect GetCommandBarBorders(CXTPCommandBar* pBar);
  1448. //-----------------------------------------------------------------------
  1449. // Summary:
  1450. //     This method is called to draw the control placed on the ListBox.
  1451. // Parameters:
  1452. //     pDC       - Pointer to a valid device context
  1453. //     pButton   - Points to a CXTPControl object
  1454. //     rc        - Bounding rectangle to draw.
  1455. //     bSelected - TRUE if the control is selected.
  1456. //     bDraw     - TRUE to draw; FALSE to retrieve the size of the control.
  1457. //     pCommandBars - CommandBars object which metrics need to use.
  1458. // Returns:
  1459. //     Size of the control.
  1460. //-----------------------------------------------------------------------
  1461. virtual CSize DrawListBoxControl(CDC* pDC, CXTPControl* pButton, CRect rc, BOOL bSelected, BOOL bDraw, CXTPCommandBars* pCommandBars = 0);
  1462. //-----------------------------------------------------------------------
  1463. // Summary:
  1464. //     This method is called to draw the specified controls.
  1465. // Parameters:
  1466. //     pDC         - Pointer to a valid device context
  1467. //     controlType - Special control enumerator.
  1468. //     pButton     - Points to a CXTPControl object to draw.
  1469. //     pBar        - Parent CXTPCommandBar object.
  1470. //     bDraw       - TRUE to draw; FALSE to retrieve the size of the
  1471. //                   control.
  1472. //     lpParam     - Specified parameter.
  1473. // Returns:
  1474. //     Size of the control.
  1475. // See Also: XTPSpecialControl
  1476. //-----------------------------------------------------------------------
  1477. virtual CSize DrawSpecialControl(CDC* pDC, XTPSpecialControl controlType, CXTPControl* pButton, CXTPCommandBar* pBar, BOOL bDraw, LPVOID lpParam);
  1478. //-----------------------------------------------------------------------
  1479. // Summary:
  1480. //     This method is called to draw a tear-off gripper of Popup Bar.
  1481. // Parameters:
  1482. //     pDC       - Pointer to a valid device context
  1483. //     rcGripper - Bounding rectangle of the gripper.
  1484. //     bSelected - True if the gripper is selected.
  1485. //     bDraw     - TRUE to draw; FALSE to retrieve the size of the gripper.
  1486. // Returns:
  1487. //     Size of the gripper.
  1488. //-----------------------------------------------------------------------
  1489. virtual CSize DrawTearOffGripper(CDC* pDC, CRect rcGripper, BOOL bSelected, BOOL bDraw);
  1490. virtual void DrawPopupResizeGripper(CDC* pDC, CRect rcGripper, int nFlags);
  1491. protected:
  1492. //-----------------------------------------------------------------------
  1493. // Summary:
  1494. //     This method is called to draw the control placed on the PopupBar.
  1495. // Parameters:
  1496. //     pDC     - Pointer to a valid device context
  1497. //     pButton - Points to a CXTPControl object
  1498. //     bDraw   - TRUE to draw; FALSE to retrieve the size of the control.
  1499. // Returns:
  1500. //     Size of the control.
  1501. //-----------------------------------------------------------------------
  1502. virtual CSize DrawControlPopupParent(CDC* pDC, CXTPControl* pButton, BOOL bDraw);
  1503. //-----------------------------------------------------------------------
  1504. // Summary:
  1505. //     Draws split button frame
  1506. // Parameters:
  1507. //     pDC      - Points to a valid device context.
  1508. //     pButton  - Pointer to split button to draw.
  1509. //     rcButton - Bounding rectangle to draw
  1510. //-----------------------------------------------------------------------
  1511. virtual void DrawSplitButtonFrame(CDC* pDC, CXTPControl* pButton, CRect rcButton);
  1512. //-----------------------------------------------------------------------
  1513. // Summary:
  1514. //     This method is called to fill the control's face
  1515. // Parameters:
  1516. //     pDC         - Pointer to a valid device context
  1517. //     rc          - Rectangle to draw.
  1518. //     bSelected   - TRUE if the control is selected.
  1519. //     bPressed    - TRUE if the control is pushed.
  1520. //     bEnabled    - TRUE if the control is enabled.
  1521. //     bChecked    - TRUE if the control is checked.
  1522. //     bPopuped    - TRUE if the control is popuped.
  1523. //     barType     - Parent's bar type
  1524. //     barPosition - Parent's bar position.
  1525. //-----------------------------------------------------------------------
  1526. virtual void DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition);
  1527. //-----------------------------------------------------------------------
  1528. // Summary:
  1529. //     This method is called to draw the image of the control.
  1530. // Parameters:
  1531. //     pDC           - Pointer to a valid device context
  1532. //     pt            - Position to draw.
  1533. //     sz            - Size of the image.
  1534. //     pImage        - Points to a CXTPImageManagerIcon object
  1535. //     bSelected     - TRUE if the control is selected.
  1536. //     bPressed      - TRUE if the control is pushed.
  1537. //     bEnabled      - TRUE if the control is enabled.
  1538. //     bChecked      - TRUE if the control is checked.
  1539. //     bPopuped      - TRUE if the control is popuped.
  1540. //     bToolBarImage - TRUE if it is a toolbar image.
  1541. //-----------------------------------------------------------------------
  1542. virtual void DrawImage(CDC* pDC, CPoint pt, CSize sz, CXTPImageManagerIcon* pImage, BOOL bSelected, BOOL bPressed, BOOL bEnabled = TRUE, BOOL bChecked = FALSE, BOOL bPopuped = FALSE, BOOL bToolBarImage = TRUE);
  1543. //-----------------------------------------------------------------------
  1544. // Summary:
  1545. //     This method is called to draw the control.
  1546. // Parameters:
  1547. //     pDC       - Pointer to a valid device context
  1548. //     pComboBox - ComboBox to draw.
  1549. //     bDraw     - TRUE to draw; FALSE to retrieve the size of the control.
  1550. // Returns:
  1551. //     Size of the control.
  1552. //-----------------------------------------------------------------------
  1553. virtual CSize DrawControlComboBox(CDC* pDC, CXTPControlComboBox* pComboBox, BOOL bDraw);
  1554. //-----------------------------------------------------------------------
  1555. // Summary:
  1556. //     This method is called to draw the control.
  1557. // Parameters:
  1558. //     pDC   - Pointer to a valid device context
  1559. //     bDraw - TRUE to draw; FALSE to retrieve the size of the control.
  1560. //     pEdit - Edit control to draw.
  1561. // Returns:
  1562. //     Size of the control.
  1563. //-----------------------------------------------------------------------
  1564. virtual CSize DrawControlEdit(CDC* pDC, CXTPControlEdit* pEdit, BOOL bDraw);
  1565. //-----------------------------------------------------------------------
  1566. // Summary:
  1567. //     Call this member to draw gripper of dialog bar.
  1568. // Parameters:
  1569. //     pDC   - Points to a valid device context.
  1570. //     pBar  - Dialog Bar pointer
  1571. //     bDraw - TRUE to draw gripper, FALSE to calculate size.
  1572. // Returns:
  1573. //     Size of gripper to be drawn.
  1574. //-----------------------------------------------------------------------
  1575. virtual CSize DrawDialogBarGripper(CDC* pDC, CXTPDialogBar* pBar, BOOL bDraw);
  1576. //-----------------------------------------------------------------------
  1577. // Summary:
  1578. //     This method is called to draw frame of edit control.
  1579. // Parameters:
  1580. //     pDC - Points to a valid device context.
  1581. //     rc - CRect object specifying size of area.
  1582. //     bEnabled  - TRUE if control is enabled.
  1583. //     bSelected - TRUE if control is selected.
  1584. //-----------------------------------------------------------------------
  1585. virtual void DrawControlEditFrame(CDC* pDC, CRect rc, BOOL bEnabled, BOOL bSelected);
  1586. //-----------------------------------------------------------------------
  1587. // Summary:
  1588. //     This method is called to draw button od combo box control.
  1589. // Parameters:
  1590. //     pDC - Points to a valid device context.
  1591. //     rcBtn     - Button bounding rectangle.
  1592. //     bEnabled  - TRUE if combo box is enabled
  1593. //     bSelected - TRUE if combo box is selected
  1594. //     bDropped  - TRUE TRUE if combo box is dropped.
  1595. //-----------------------------------------------------------------------
  1596. virtual void DrawControlComboBoxButton(CDC* pDC, CRect rcBtn, BOOL bEnabled, BOOL bSelected, BOOL bDropped);
  1597. //-----------------------------------------------------------------------
  1598. // Summary:
  1599. //     This method draws edit control spin buttons
  1600. // Parameters:
  1601. //     pDC - Pointer to device context
  1602. //     pControlEdit - Edit control
  1603. //-----------------------------------------------------------------------
  1604. virtual void DrawControlEditSpin(CDC* pDC, CXTPControlEdit* pControlEdit);
  1605. //-----------------------------------------------------------------------
  1606. // Summary:
  1607. //     Retrieves the base theme of the manager.
  1608. // Returns:
  1609. //     Returns the base theme.
  1610. //-----------------------------------------------------------------------
  1611. XTPPaintTheme BaseTheme() { return xtpThemeOffice2000; }
  1612. protected:
  1613. //{{AFX_CODEJOCK_PRIVATE
  1614. void DrawShadedRect(CDC* pDC, CRect& rect);
  1615. virtual CSize GetPopupBarImageSize(CXTPCommandBar* pBar);
  1616. //}}AFX_CODEJOCK_PRIVATE
  1617. protected:
  1618. int m_nPopupBarText;    // Popup bar text index.
  1619. };
  1620. //===========================================================================
  1621. // Summary:
  1622. //     The CXTPNativeXPTheme class is used to enable a Windows XP style theme for Command Bars
  1623. // See Also: CXTPPaintManager::SetTheme
  1624. //===========================================================================
  1625. class _XTP_EXT_CLASS CXTPNativeXPTheme : public CXTPDefaultTheme
  1626. {
  1627. public:
  1628. //-----------------------------------------------------------------------
  1629. // Summary:
  1630. //     Constructs a CXTPNativeXPTheme object.
  1631. //-----------------------------------------------------------------------
  1632. CXTPNativeXPTheme();
  1633. //-----------------------------------------------------------------------
  1634. // Summary:
  1635. //     Destroys a CXTPNativeXPTheme object, handles cleanup and deallocation
  1636. //-----------------------------------------------------------------------
  1637. ~CXTPNativeXPTheme();
  1638. protected:
  1639. //-----------------------------------------------------------------------
  1640. // Summary:
  1641. //     This method is called to refresh the visual metrics of the manager.
  1642. //-----------------------------------------------------------------------
  1643. virtual void RefreshMetrics();
  1644. //-----------------------------------------------------------------------
  1645. // Summary:
  1646. //     This method is called to fill the command bar's face.
  1647. // Parameters:
  1648. //     pDC  - Pointer to a valid device context
  1649. //     pBar - Points to a CXTPCommandBar object to draw.
  1650. //-----------------------------------------------------------------------
  1651. virtual void FillCommandBarEntry(CDC* pDC, CXTPCommandBar* pBar);
  1652. //-----------------------------------------------------------------------
  1653. // Summary:
  1654. //     This method is called to fill the control's face
  1655. // Parameters:
  1656. //     pDC         - Pointer to a valid device context
  1657. //     rc          - Rectangle to draw.
  1658. //     bSelected   - TRUE if the control is selected.
  1659. //     bPressed    - TRUE if the control is pushed.
  1660. //     bEnabled    - TRUE if the control is enabled.
  1661. //     bChecked    - TRUE if the control is checked.
  1662. //     bPopuped    - TRUE if the control is popuped.
  1663. //     barType     - Parent's bar type
  1664. //     barPosition - Parent's bar position.
  1665. //-----------------------------------------------------------------------
  1666. virtual void DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition);
  1667. //-----------------------------------------------------------------------
  1668. // Summary:
  1669. //     This method is called to fill the control's face
  1670. // Parameters:
  1671. //     pDC         - Pointer to a valid device context
  1672. //     pButton - Points to a CXTPControl object to draw.
  1673. //-----------------------------------------------------------------------
  1674. void DrawControlEntry(CDC* pDC, CXTPControl* pButton);
  1675. //-----------------------------------------------------------------------
  1676. // Summary:
  1677. //     This method returns control text color to draw
  1678. // Parameters:
  1679. //     pButton - Points to a CXTPControl object to draw.
  1680. //-----------------------------------------------------------------------
  1681. COLORREF GetControlTextColor(CXTPControl* pButton);
  1682. //-----------------------------------------------------------------------
  1683. // Summary:
  1684. //     This method is called to draw the command bar's gripper.
  1685. // Parameters:
  1686. //     pDC   - Pointer to a valid device context
  1687. //     pBar  - Points to a CXTPCommandBar object
  1688. //     bDraw - TRUE to draw; FALSE to retrieve the size of the gripper.
  1689. // Returns:
  1690. //     Size of the gripper.
  1691. //-----------------------------------------------------------------------
  1692. virtual CSize DrawCommandBarGripper(CDC* pDC, CXTPCommandBar* pBar, BOOL bDraw = TRUE);
  1693. //-----------------------------------------------------------------------
  1694. // Summary:
  1695. //     This method is called to fill a dockbar.
  1696. // Parameters:
  1697. //     pDC  - Pointer to a valid device context
  1698. //     pBar - Points to a CXTPDockBar object
  1699. //-----------------------------------------------------------------------
  1700. virtual void FillDockBar(CDC* pDC, CXTPDockBar* pBar);
  1701. //-----------------------------------------------------------------------
  1702. // Summary:
  1703. //     This method is called to fill a dockbar.
  1704. // Parameters:
  1705. //     pDC - Points to a valid device context.
  1706. //     pWnd   - Client area to fill.
  1707. //     pFrame - Parent frame window.
  1708. //-----------------------------------------------------------------------
  1709. void FillDockBarRect(CDC* pDC, CWnd* pWnd, CWnd* pFrame);
  1710. //-----------------------------------------------------------------------
  1711. // Summary:
  1712. //     This method is called to determine offset of popuped bar.
  1713. // Parameters:
  1714. //     rc       - Control's bounding rectangle.
  1715. //     pControl - Points to a CXTPControl object
  1716. //     bVertical - TRUE if control docked vertically.
  1717. //-----------------------------------------------------------------------
  1718. void AdjustExcludeRect(CRect& rc, CXTPControl* pControl, BOOL bVertical);
  1719. //-----------------------------------------------------------------------
  1720. // Summary:
  1721. //     Draws split button frame
  1722. // Parameters:
  1723. //     pDC      - Points to a valid device context.
  1724. //     pButton  - Pointer to split button to draw.
  1725. //     rcButton - Bounding rectangle to draw
  1726. //-----------------------------------------------------------------------
  1727. void DrawSplitButtonFrame(CDC* pDC, CXTPControl* pButton, CRect rcButton);
  1728. //-----------------------------------------------------------------------
  1729. // Summary:
  1730. //     This method is called to draw frame of edit control.
  1731. // Parameters:
  1732. //     pDC - Points to a valid device context.
  1733. //     rc - CRect object specifying size of area.
  1734. //     bEnabled  - TRUE if control is enabled.
  1735. //     bSelected - TRUE if control is selected.
  1736. //-----------------------------------------------------------------------
  1737. virtual void DrawControlEditFrame(CDC* pDC, CRect rc, BOOL bEnabled, BOOL bSelected);
  1738. //-----------------------------------------------------------------------
  1739. // Summary:
  1740. //     This method is called to draw button od combo box control.
  1741. // Parameters:
  1742. //     pDC - Points to a valid device context.
  1743. //     rcBtn     - Button bounding rectangle.
  1744. //     bEnabled  - TRUE if combo box is enabled
  1745. //     bSelected - TRUE if combo box is selected
  1746. //     bDropped  - TRUE TRUE if combo box is dropped.
  1747. //-----------------------------------------------------------------------
  1748. virtual void DrawControlComboBoxButton(CDC* pDC, CRect rcBtn, BOOL bEnabled, BOOL bSelected, BOOL bDropped);
  1749. //-----------------------------------------------------------------------
  1750. // Summary:
  1751. //     Call this member to draw gripper of dialog bar.
  1752. // Parameters:
  1753. //     pDC   - Points to a valid device context.
  1754. //     pBar  - Dialog Bar pointer
  1755. //     bDraw - TRUE to draw gripper, FALSE to calculate size.
  1756. // Returns:
  1757. //     Size of gripper to be drawn.
  1758. //-----------------------------------------------------------------------
  1759. virtual CSize DrawDialogBarGripper(CDC* pDC, CXTPDialogBar* pBar, BOOL bDraw);
  1760. //-----------------------------------------------------------------------
  1761. // Summary:
  1762. //     This method is called to draw a command bar's separator.
  1763. // Parameters:
  1764. //     pDC      - Pointer to a valid device context
  1765. //     pBar     - Points to a CXTPCommandBar object
  1766. //     pControl - Points to a CXTPControl object
  1767. //     bDraw    - TRUE to draw; FALSE to retrieve the size of the separator.
  1768. // Returns:
  1769. //     This method is called to draw a command bar's separator.
  1770. //-----------------------------------------------------------------------
  1771. virtual CSize DrawCommandBarSeparator(CDC* pDC, CXTPCommandBar* pBar, CXTPControl* pControl, BOOL bDraw = TRUE);
  1772. //-----------------------------------------------------------------------
  1773. // Summary:
  1774. //     This method retrieves buttons text color
  1775. // Parameters:
  1776. //     bSelected   - TRUE if the control is selected.
  1777. //     bPressed    - TRUE if the control is pushed.
  1778. //     bEnabled    - TRUE if the control is enabled.
  1779. //     bChecked    - TRUE if the control is checked.
  1780. //     bPopuped    - TRUE if the control is popuped.
  1781. //     barType     - Parent's bar type
  1782. //     barPosition - Parent's bar position.
  1783. //-----------------------------------------------------------------------
  1784. virtual COLORREF GetRectangleTextColor(BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition);
  1785. //-----------------------------------------------------------------------
  1786. // Summary:
  1787. //     Retrieves the base theme of the manager.
  1788. // Returns:
  1789. //     Returns the base theme.
  1790. //-----------------------------------------------------------------------
  1791. XTPPaintTheme BaseTheme() { return xtpThemeNativeWinXP; }
  1792. //-----------------------------------------------------------------------
  1793. // Summary:
  1794. //     Determines if theme is enabled
  1795. // Returns:
  1796. //     TRUE if WinXP theme is enabled
  1797. //-----------------------------------------------------------------------
  1798. BOOL IsThemeEnabled() const;
  1799. //-----------------------------------------------------------------------
  1800. // Summary:
  1801. //     This method draws edit control spin buttons
  1802. // Parameters:
  1803. //     pDC - Pointer to device context
  1804. //     pControlEdit - Edit control
  1805. //-----------------------------------------------------------------------
  1806. virtual void DrawControlEditSpin(CDC* pDC, CXTPControlEdit* pControlEdit);
  1807. //-----------------------------------------------------------------------
  1808. // Summary:
  1809. //     This method is called to draw the specified controls.
  1810. // Parameters:
  1811. //     pDC         - Pointer to a valid device context
  1812. //     controlType - Special control enumerator.
  1813. //     pButton     - Points to a CXTPControl object to draw.
  1814. //     pBar        - Parent CXTPCommandBar object.
  1815. //     bDraw       - TRUE to draw; FALSE to retrieve the size of the
  1816. //                   control.
  1817. //     lpParam     - Specified parameter.
  1818. // Returns:
  1819. //     Size of the control.
  1820. //-----------------------------------------------------------------------
  1821. virtual CSize DrawSpecialControl(CDC* pDC, XTPSpecialControl controlType, CXTPControl* pButton, CXTPCommandBar* pBar, BOOL bDraw, LPVOID lpParam);
  1822. virtual void DrawPopupBarGripper(CDC* pDC, int xPos, int yPos, int cx, int cy, BOOL bExpanded = FALSE);
  1823. //-----------------------------------------------------------------------
  1824. // Summary:
  1825. //     Call this member function to draw a check mark.
  1826. // Parameters:
  1827. //     pDC        - Pointer to a valid device context
  1828. //     rcCheck    - Specifies the rectangle in logical units.
  1829. //     clr        - Color to fill.
  1830. //-----------------------------------------------------------------------
  1831. virtual void DrawPopupBarCheckMark(CDC* pDC, CRect rcCheck, BOOL bEnabled, COLORREF clr);
  1832. //-----------------------------------------------------------------------
  1833. // Summary:
  1834. //     Call this member function to draw a radio button.
  1835. // Parameters:
  1836. //     pDC        - Pointer to a valid device context
  1837. //     rcCheck    - Specifies the rectangle in logical units.
  1838. //     clr        - Color to fill.
  1839. //-----------------------------------------------------------------------
  1840. virtual void DrawPopupBarRadioMark(CDC* pDC, CRect rcCheck, BOOL bEnabled, COLORREF clr);
  1841. virtual int GetPopupBarGripperWidth(CXTPCommandBar* pBar);
  1842. protected:
  1843. CXTPWinThemeWrapper m_themeRebar;           // Rebar theme helper
  1844. CXTPWinThemeWrapper m_themeToolbar;         // Toolbar theme helper
  1845. CXTPWinThemeWrapper m_themeCombo;           // ComboBox theme helper
  1846. CXTPWinThemeWrapper m_themeWindow;          // Window theme helper
  1847. CXTPWinThemeWrapper m_themeSpin;            // Window theme helper
  1848. CXTPWinThemeWrapper m_themeMenu;            // Menu theme helper
  1849. COLORREF            m_clrEdgeShadowColor;   // Color of toolbar bottom line
  1850. COLORREF            m_clrEdgeHighLightColor;// Color of toolbar top line
  1851. BOOL                m_bFlatMenus;           // TRUE if OS flat menu option enabled
  1852. };
  1853. //===========================================================================
  1854. // Summary:
  1855. //     The CXTPReBarPaintManager template class is used to enable a ReBar theme for Command Bars
  1856. // See Also: CXTPPaintManager::SetTheme
  1857. //===========================================================================
  1858. template <class TBase>
  1859. class CXTPReBarPaintManager : public TBase
  1860. {
  1861. public:
  1862. //-----------------------------------------------------------------------
  1863. // Summary:
  1864. //     Constructs a CXTPReBarPaintManager object.
  1865. //-----------------------------------------------------------------------
  1866. CXTPReBarPaintManager()
  1867. {
  1868. RefreshMetrics();
  1869. }
  1870. //-----------------------------------------------------------------------
  1871. // Summary:
  1872. //     This method is called to refresh the visual metrics of the manager.
  1873. //-----------------------------------------------------------------------
  1874. void RefreshMetrics()
  1875. {
  1876. TBase::RefreshMetrics();
  1877. m_themeRebar.OpenThemeData(0, L"REBAR");
  1878. }
  1879. //-----------------------------------------------------------------------
  1880. // Summary:
  1881. //     This method is called to fill the command bar's face.
  1882. // Parameters:
  1883. //     pDC  - Pointer to a valid device context
  1884. //     pBar - Points to a CXTPCommandBar object to draw.
  1885. //-----------------------------------------------------------------------
  1886. void FillCommandBarEntry (CDC* pDC, CXTPCommandBar* pBar)
  1887. {
  1888. if (pBar->GetPosition() != xtpBarFloating && pBar->GetPosition() != xtpBarPopup)
  1889. {
  1890. if (m_themeRebar.IsAppThemed())
  1891. {
  1892. CXTPWindowRect rcClient(pBar->GetParent());
  1893. pBar->ScreenToClient(&rcClient);
  1894. m_themeRebar.DrawThemeBackground(pDC->GetSafeHdc(), 0, 0, &rcClient, 0);
  1895. }
  1896. else
  1897. pDC->FillSolidRect(CXTPClientRect(pBar), GetSysColor(COLOR_3DFACE));
  1898. }
  1899. else
  1900. {
  1901. TBase::FillCommandBarEntry(pDC, pBar);
  1902. }
  1903. }
  1904. protected:
  1905. CXTPWinThemeWrapper m_themeRebar;  // ReBar theme helper.
  1906. };
  1907. //////////////////////////////////////////////////////////////////////////
  1908. AFX_INLINE void CXTPPaintManager::SetAnimationDelay(int nAnimationSteps, int nAnimationTime) {
  1909. m_nAnimationSteps = nAnimationSteps;
  1910. m_nAnimationTime = nAnimationTime;
  1911. }
  1912. AFX_INLINE CFont* CXTPPaintManager::GetRegularFont() {
  1913. return this == NULL ? CFont ::FromHandle((HFONT)::GetStockObject(DEFAULT_GUI_FONT)): &m_fontRegular;
  1914. }
  1915. AFX_INLINE CFont* CXTPPaintManager::GetRegularBoldFont() {
  1916. return &m_fontRegularBold;
  1917. }
  1918. AFX_INLINE CFont* CXTPPaintManager::GetIconFont() {
  1919. return &m_fontIcon;
  1920. }
  1921. AFX_INLINE CFont* CXTPPaintManager::GetSmCaptionFont() {
  1922. return &m_fontSmCaption;
  1923. }
  1924. AFX_INLINE void CXTPPaintManager::ShowKeyboardCues(BOOL bShow) {
  1925. m_bShowKeyboardCues = bShow;
  1926. }
  1927. AFX_INLINE CXTPControlGalleryPaintManager* CXTPPaintManager::GetGalleryPaintManager() const {
  1928. return m_pGalleryPaintManager;
  1929. }
  1930. AFX_INLINE CXTPSliderPaintManager* CXTPPaintManager::GetSliderPaintManager() const {
  1931. return m_pSliderPaintManager;
  1932. }
  1933. AFX_INLINE CXTPProgressPaintManager* CXTPPaintManager::GetProgressPaintManager() const {
  1934. return m_pProgressPaintManager;
  1935. }
  1936. AFX_INLINE CXTPShadowManager* CXTPPaintManager::GetShadowManager() const {
  1937. return m_pShadowManager;
  1938. }
  1939. #endif // #if !defined(__XTPPAINTMANAGER_H__)