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

对话框与窗口

开发平台:

Visual C++

  1. // XTPPropertyGridPaintManager.h interface for the CXTPPropertyGridPaintManager class.
  2. //
  3. // This file is a part of the XTREME PROPERTYGRID 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(_XTPPROPERTYGRIDPAINTMANAGER_H__)
  22. #define _XTPPROPERTYGRIDPAINTMANAGER_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "Common/XTPWinThemeWrapper.h"
  28. #include "Common/XTPColorManager.h"
  29. class CXTPPropertyGrid;
  30. class CXTPPropertyGridInplaceButton;
  31. class CXTPPropertyGridItem;
  32. class CXTPPropertyGridItemConstraint;
  33. class CXTPPropertyGridItemBool;
  34. //-----------------------------------------------------------------------
  35. // Summary:
  36. //     Visual theme enumeration
  37. // Example:
  38. //     <code> m_wndPropertyGrid.SetTheme(xtpGridThemeWhidbey); </code>
  39. // See Also: CXTPPropertyGrid::SetTheme, CXTPPropertyGrid::GetCurrentTheme
  40. //
  41. // <KEYWORDS xtpGridThemeDefault, xtpGridThemeNativeWinXP, xtpGridThemeOffice2003, xtpGridThemeCool, xtpGridThemeSimple, xtpGridThemeDelphi, xtpGridThemeWhidbey>
  42. //-----------------------------------------------------------------------
  43. enum XTPPropertyGridPaintTheme
  44. {
  45. xtpGridThemeDefault,     // Default theme.
  46. xtpGridThemeNativeWinXP, // WinXP style theme.
  47. xtpGridThemeOffice2003,  // Office 2003 style theme.
  48. xtpGridThemeCool,        // Cool theme.
  49. xtpGridThemeSimple,      // Visual Basic style theme.
  50. xtpGridThemeDelphi,      // Delphi style theme.
  51. xtpGridThemeWhidbey,     // Visual Studio 2005 "Whidbey" style theme.
  52. xtpGridThemeOfficeXP,    // Office XP style theme.
  53. xtpGridThemeOffice2007   // Office 2007 style theme.
  54. };
  55. //-----------------------------------------------------------------------
  56. // Summary:
  57. //     Border Style enumeration
  58. // Example:
  59. //     <code>m_wndPropertyGrid.SetBorderStyle(xtpGridBorderClientEdge);</code>
  60. // See Also: CXTPPropertyGrid::SetBorderStyle
  61. //-----------------------------------------------------------------------
  62. enum XTPPropertyGridBorderStyle
  63. {
  64. xtpGridBorderNone,      // Without borders
  65. xtpGridBorderFlat,      // Black flat borders
  66. xtpGridBorderStaticEdge,// Static edge
  67. xtpGridBorderClientEdge // Client edge
  68. };
  69. //-----------------------------------------------------------------------
  70. // Summary:
  71. //     InplaceButtons style
  72. // Example:
  73. //     pPaintManager->m_buttonsStyle = xtpGridButtonsOfficeXP;
  74. // See Also: CXTPPropertyGrid::SetTheme, CXTPPropertyGrid::GetCurrentTheme
  75. //-----------------------------------------------------------------------
  76. enum XTPPropertyGridInplaceButtonsStyle
  77. {
  78. xtpGridButtonsDefault,          // Default button style
  79. xtpGridButtonsThemed,           // Themed button style
  80. xtpGridButtonsOfficeXP,         // Office XP button style
  81. };
  82. class CXTPPropertyGridPaintManager;
  83. //===========================================================================
  84. // Summary:
  85. //     Standalone class used by CXTPPropertyGridPaintManager as holder of item metrics
  86. //===========================================================================
  87. class _XTP_EXT_CLASS CXTPPropertyGridItemMetrics : public CXTPCmdTarget
  88. {
  89. public:
  90. //-----------------------------------------------------------------------
  91. // Summary:
  92. //     Constructs a CXTPPropertyGridItemMetrics object.
  93. // Parameters:
  94. //     pPaintManager - Parent CXTPPropertyGridPaintManager object
  95. //-----------------------------------------------------------------------
  96. CXTPPropertyGridItemMetrics(CXTPPropertyGridPaintManager* pPaintManager);
  97. //-----------------------------------------------------------------------
  98. // Summary:
  99. //     Resets all color values to its defaults.
  100. //-----------------------------------------------------------------------
  101. virtual void SetDefaultValues();
  102. public:
  103. CFont                         m_fontNormal;         // Normal font.
  104. CFont                         m_fontBold;           // Bold font.
  105. int                           m_nImage;             // Image index.
  106. CXTPPaintManagerColor         m_clrHelpBack;        // Color of the description background.
  107. CXTPPaintManagerColor         m_clrHelpFore;        // Color of the description text.
  108. CXTPPaintManagerColor         m_clrLine;            // Line color.
  109. CXTPPaintManagerColor         m_clrFore;            // Color of the item's text.
  110. CXTPPaintManagerColor         m_clrCategoryFore;    // Color of the category text.
  111. CXTPPaintManagerColor         m_clrBack;            // Background color.
  112. CXTPPaintManagerColor         m_clrReadOnlyFore;    // Color of read-only text.
  113. CXTPPaintManagerColor         m_clrVerbFace;        // Text color of verbs.
  114. UINT                          m_uDrawTextFormat;    // Text formatting style for the property item.
  115. int                           m_nMaxLength;         // Maximum number of characters that can be entered into an editable item (Edit limit).
  116. protected:
  117. CXTPPropertyGridPaintManager* m_pPaintManager;          // Pointer to the paint manager used to draw the property grid.
  118. };
  119. //===========================================================================
  120. // Summary:
  121. //     Standalone class used by CXTPPropertyGrid as the paint manager.
  122. //===========================================================================
  123. class _XTP_EXT_CLASS CXTPPropertyGridPaintManager : public CXTPCmdTarget
  124. {
  125. public:
  126. //-----------------------------------------------------------------------
  127. // Summary:
  128. //     Constructs a CXTPPropertyGridPaintManager object.
  129. // Parameters:
  130. //     pGrid - Points to a CXTPPropertyGrid object
  131. //-----------------------------------------------------------------------
  132. CXTPPropertyGridPaintManager(CXTPPropertyGrid* pGrid);
  133. //-----------------------------------------------------------------------
  134. // Summary:
  135. //     Destroys a CXTPPropertyGridPaintManager object, handles cleanup
  136. //     and deallocation.
  137. //-----------------------------------------------------------------------
  138. virtual ~CXTPPropertyGridPaintManager();
  139. public:
  140. //-----------------------------------------------------------------------
  141. // Summary:
  142. //     This method is called to get item text color
  143. // Parameters:
  144. //     pItem - Item which text color need to get
  145. //     bValuePart - TRUE if value part color needed
  146. // Returns:
  147. //     COLORREF of item text.
  148. //-----------------------------------------------------------------------
  149. virtual COLORREF GetItemTextColor(CXTPPropertyGridItem* pItem, BOOL bValuePart);
  150. //-----------------------------------------------------------------------
  151. // Summary:
  152. //     This method is called to get item back color
  153. // Parameters:
  154. //     pItem - Item which back color need to get
  155. //     bValuePart - TRUE if value part color needed
  156. // Returns:
  157. //     COLORREF of item back.
  158. //-----------------------------------------------------------------------
  159. virtual COLORREF GetItemBackColor(CXTPPropertyGridItem* pItem, BOOL bValuePart);
  160. //-----------------------------------------------------------------------
  161. // Summary:
  162. //     This method is called to get item font
  163. // Parameters:
  164. //     pItem - Item which font color need to get
  165. //     bValuePart - TRUE if value part font needed
  166. // Returns:
  167. //     Pointer to CFont object containing font of the item
  168. //-----------------------------------------------------------------------
  169. virtual CFont* GetItemFont(CXTPPropertyGridItem* pItem, BOOL bValuePart);
  170. public:
  171. //-----------------------------------------------------------------------
  172. // Summary:
  173. //     This method is called to draw property grid background.
  174. // Parameters:
  175. //     pDC - Pointer to a valid device context
  176. //-----------------------------------------------------------------------
  177. virtual void FillPropertyGrid(CDC* pDC);
  178. //-----------------------------------------------------------------------
  179. // Summary:
  180. //     This method is called to draw view background.
  181. // Parameters:
  182. //     pDC - Pointer to a valid device context
  183. //-----------------------------------------------------------------------
  184. virtual void FillPropertyGridView(CDC* pDC);
  185. //-----------------------------------------------------------------------
  186. // Summary:
  187. //     This method is called to draw grid borders
  188. // Parameters:
  189. //      pDC - Pointer to a valid device context
  190. //      rcBorder - Bounding rectangle
  191. //      bAdjustRect - TURE to adjust bounding rectangle
  192. // See Also: FillPropertyGridView
  193. //-----------------------------------------------------------------------
  194. virtual void DrawPropertyGridBorder(CDC* pDC, RECT& rcBorder, BOOL bAdjustRect);
  195. //-----------------------------------------------------------------------
  196. // Summary:
  197. //     This method is called to draw single item of the grid.
  198. // Parameters:
  199. //     lpDrawItemStruct - A long pointer to a DRAWITEMSTRUCT structure
  200. //     that contains information about the type of drawing required.
  201. //-----------------------------------------------------------------------
  202. virtual void DrawItem(PDRAWITEMSTRUCT lpDrawItemStruct);
  203. //-----------------------------------------------------------------------
  204. // Summary:
  205. //     This method is called to draw specified constraint in in-place list.
  206. // Parameters:
  207. //     pDC       - Pointer to a valid device context
  208. //     rc        - Bounding rectangle of the constraint
  209. //     bSelected - TRUE if constraint is currently selected.
  210. //     pConstraint - Constraint to draw.
  211. //-----------------------------------------------------------------------
  212. virtual void DrawInplaceListItem(CDC* pDC, CXTPPropertyGridItemConstraint* pConstraint, CRect rc, BOOL bSelected);
  213. //-----------------------------------------------------------------------
  214. // Summary:
  215. //     This method is called to get rectangle of value part of the item.
  216. // Parameters:
  217. //     pItem - Property Grid item
  218. //     rcValue - Rectangle of the value part
  219. //-----------------------------------------------------------------------
  220. virtual void AdjustItemValueRect(CXTPPropertyGridItem* pItem, CRect& rcValue);
  221. //-----------------------------------------------------------------------
  222. // Summary:
  223. //     This method is called to get rectangle of caption part of the item.
  224. // Parameters:
  225. //     pItem - Property Grid item
  226. //     rcCaption - Rectangle of the caption part
  227. //-----------------------------------------------------------------------
  228. virtual void AdjustItemCaptionRect(CXTPPropertyGridItem* pItem, CRect& rcCaption);
  229. //-----------------------------------------------------------------------
  230. // Summary:
  231. //     Override this method and fill in the MEASUREITEMSTRUCT structure
  232. //     to inform Windows of the list-box dimensions.
  233. // Parameters:
  234. //     lpMeasureItemStruct - Specifies a long pointer to a MEASUREITEMSTRUCT
  235. //     structure.
  236. //-----------------------------------------------------------------------
  237. virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
  238. //-----------------------------------------------------------------------
  239. // Summary:
  240. //     This method is called to draw in-place button of the grid.
  241. // Parameters:
  242. //     pDC - Pointer to a valid device context
  243. //     pButton - Points to a CXTPPropertyGridInplaceButton object
  244. //-----------------------------------------------------------------------
  245. virtual void FillInplaceButton(CDC* pDC, CXTPPropertyGridInplaceButton* pButton);
  246. //-----------------------------------------------------------------------
  247. // Summary:
  248. //     This method is called to refresh the visual metrics of manager.
  249. //-----------------------------------------------------------------------
  250. virtual void RefreshMetrics();
  251. //-----------------------------------------------------------------------
  252. // Summary:
  253. //     Call this member to determine if a verb is at a specific point.
  254. // Parameters:
  255. //     pDC     - Reference to a valid device context
  256. //     rcVerbs - Bounding rectangle of all verbs.
  257. //     pt      - Point to test.
  258. // Returns:
  259. //     Index of verb within collection if the point was on a verb,
  260. //     otherwise -1.
  261. //-----------------------------------------------------------------------
  262. int HitTestVerbs(CDC* pDC, CRect rcVerbs, CPoint pt);
  263. //-----------------------------------------------------------------------
  264. // Summary:
  265. //     Retrieves default item metrics
  266. // Returns:
  267. //     Call this method to get default item metrics
  268. //-----------------------------------------------------------------------
  269. CXTPPropertyGridItemMetrics* GetItemMetrics() const;
  270. public:
  271. //-----------------------------------------------------------------------
  272. // Summary:
  273. //     This method is called to draw expand buttons of the grid.
  274. // Parameters:
  275. //     dc - Reference to a valid device context
  276. //     pItem - Points to a CXTPPropertyGridItem object
  277. //     rcCaption - Caption button rectangle.
  278. //-----------------------------------------------------------------------
  279. virtual void DrawExpandButton(CDC& dc, CXTPPropertyGridItem* pItem, CRect rcCaption);
  280. //-----------------------------------------------------------------------
  281. // Summary:
  282. //     This member is called to draw the bounding rectangle for a
  283. //     category caption.
  284. // Parameters:
  285. //     pDC - Reference to a valid device context
  286. //     rc  - Bounding rectangle of Category's caption.
  287. //-----------------------------------------------------------------------
  288. virtual void DrawCategoryCaptionBackground(CDC* pDC, CXTPPropertyGridItem* pItem, CRect rc);
  289. //-----------------------------------------------------------------------
  290. // Summary:
  291. //     This method is called to draw value part of the property grid item
  292. // Parameters:
  293. //     pDC     - Pointer to a valid device context
  294. //     pItem   - Property Grid item to draw
  295. //     rcValue - Bounding rectangle of the value part
  296. //-----------------------------------------------------------------------
  297. virtual void DrawItemValue(CDC* pDC, CXTPPropertyGridItem* pItem, CRect rcValue);
  298. //-----------------------------------------------------------------------
  299. // Summary:
  300. //     This method is called to draw caption part of the property grid item
  301. // Parameters:
  302. //     pDC     - Pointer to a valid device context
  303. //     pItem   - Property Grid item to draw
  304. //     rcCaption - Bounding rectangle of the caption part
  305. //-----------------------------------------------------------------------
  306. virtual void DrawItemCaption(CDC* pDC, CXTPPropertyGridItem* pItem, CRect rcCaption);
  307. //-----------------------------------------------------------------------
  308. // Summary:
  309. //     This method is called to draw inplace buttons if the item
  310. // Parameters:
  311. //     pDC     - Pointer to a valid device context
  312. //     pItem   - Property Grid item to draw
  313. //     rcValue - Value bounding rectangle
  314. //-----------------------------------------------------------------------
  315. virtual void DrawInplaceButtons(CDC* pDC, CXTPPropertyGridItem* pItem, CRect rcValue);
  316. virtual void DrawCheckBox(CDC* pDC, CXTPPropertyGridItemBool* pButton);
  317. public:
  318. XTPPropertyGridInplaceButtonsStyle m_buttonsStyle;   // TRUE to use WinXP themes.
  319. CXTPWinThemeWrapper m_themeTree;                // Themes for Tree controls.
  320. CXTPWinThemeWrapper m_themeButton;              // Themes for button controls
  321. CXTPWinThemeWrapper m_themeCombo;               // Themes for combo button.
  322. BOOL m_bTransparent;                            // TRUE to draw background with parent color
  323. public:
  324. CXTPPaintManagerColor m_clrFace;                             // Face color.
  325. CXTPPaintManagerColor m_clrShadow;                           // Shadow color.
  326. CXTPPaintManagerColor m_clrHighlight;                        // Highlight color.
  327. CXTPPaintManagerColor m_clrHighlightText;                    // Highlight text color.
  328. protected:
  329. CXTPPropertyGrid* m_pGrid;                      // Parent grid class.
  330. CFont m_fntVerbUnderline;                       // Font used to display the caption of verbs with underline
  331. CFont m_fntVerbNormal;                          // Font used to display the caption of verbs without underline
  332. CXTPPropertyGridItemMetrics* m_pMetrics;        // Default metrics of the item
  333. friend class CXTPPropertyGrid;
  334. };
  335. namespace XTPPropertyGridPaintThemes
  336. {
  337. //===========================================================================
  338. // Summary:
  339. //     CXTPPropertyGridOffice2003Theme is a CXTPPropertyGridPaintManager derived
  340. //     class.  This represents an Office 2003 style theme.
  341. //===========================================================================
  342. class _XTP_EXT_CLASS CXTPPropertyGridOffice2003Theme : public CXTPPropertyGridPaintManager
  343. {
  344. public:
  345. //-----------------------------------------------------------------------
  346. // Summary:
  347. //     Constructs a CXTPPropertyGridOffice2003Theme object.
  348. // Parameters:
  349. //     pGrid - Points to a CXTPPropertyGrid object
  350. //-----------------------------------------------------------------------
  351. CXTPPropertyGridOffice2003Theme(CXTPPropertyGrid* pGrid);
  352. //-------------------------------------------------------------------------
  353. // Summary:
  354. //     This method is called to refresh the visual metrics of the
  355. //     property grid.
  356. //-------------------------------------------------------------------------
  357. virtual void RefreshMetrics();
  358. protected:
  359. BOOL m_bLunaTheme;  // TRUE to use luna colors, FALSE otherwise
  360. };
  361. class _XTP_EXT_CLASS CXTPPropertyGridOffice2007Theme : public CXTPPropertyGridOffice2003Theme
  362. {
  363. public:
  364. //-----------------------------------------------------------------------
  365. // Summary:
  366. //     Constructs a CXTPPropertyGridOffice2003Theme object.
  367. // Parameters:
  368. //     pGrid - Points to a CXTPPropertyGrid object
  369. //-----------------------------------------------------------------------
  370. CXTPPropertyGridOffice2007Theme(CXTPPropertyGrid* pGrid);
  371. //-------------------------------------------------------------------------
  372. // Summary:
  373. //     This method is called to refresh the visual metrics of the
  374. //     property grid.
  375. //-------------------------------------------------------------------------
  376. virtual void RefreshMetrics();
  377. protected:
  378. virtual void FillInplaceButton(CDC* pDC, CXTPPropertyGridInplaceButton* pButton);
  379. virtual void DrawCheckBox(CDC* pDC, CXTPPropertyGridItemBool* pButton);
  380. };
  381. //===========================================================================
  382. // Summary:
  383. //     CXTPPropertyGridNativeXPTheme is a CXTPPropertyGridPaintManager derived
  384. //     class.  This represents a Native Windows XP style theme.
  385. //===========================================================================
  386. class _XTP_EXT_CLASS CXTPPropertyGridNativeXPTheme : public CXTPPropertyGridPaintManager
  387. {
  388. public:
  389. //-----------------------------------------------------------------------
  390. // Summary:
  391. //     Constructs a CXTPPropertyGridNativeXPTheme object.
  392. // Parameters:
  393. //     pGrid - Points to a CXTPPropertyGrid object
  394. //-----------------------------------------------------------------------
  395. CXTPPropertyGridNativeXPTheme(CXTPPropertyGrid* pGrid);
  396. //-------------------------------------------------------------------------
  397. // Summary:
  398. //     This method is called to refresh the visual metrics of the
  399. //     property grid.
  400. //-------------------------------------------------------------------------
  401. virtual void RefreshMetrics();
  402. };
  403. //===========================================================================
  404. // Summary:
  405. //     CXTPPropertyGridOfficeXPTheme is a CXTPPropertyGridPaintManager derived
  406. //     class.  This represents a Office XP style theme.
  407. //===========================================================================
  408. class _XTP_EXT_CLASS CXTPPropertyGridOfficeXPTheme : public CXTPPropertyGridPaintManager
  409. {
  410. public:
  411. //-----------------------------------------------------------------------
  412. // Summary:
  413. //     Constructs a CXTPPropertyGridOfficeXPTheme object.
  414. // Parameters:
  415. //     pGrid - Points to a CXTPPropertyGrid object
  416. //-----------------------------------------------------------------------
  417. CXTPPropertyGridOfficeXPTheme(CXTPPropertyGrid* pGrid);
  418. //-------------------------------------------------------------------------
  419. // Summary:
  420. //     This method is called to refresh the visual metrics of the
  421. //     property grid.
  422. //-------------------------------------------------------------------------
  423. void RefreshMetrics();
  424. };
  425. //===========================================================================
  426. // Summary:
  427. //     CXTPPropertyGridCoolTheme is a CXTPPropertyGridPaintManager derived
  428. //     class.  This represents a Cool style theme.
  429. //===========================================================================
  430. class _XTP_EXT_CLASS CXTPPropertyGridCoolTheme : public CXTPPropertyGridPaintManager
  431. {
  432. public:
  433. //-----------------------------------------------------------------------
  434. // Summary:
  435. //     Constructs a CXTPPropertyGridCoolTheme object.
  436. // Parameters:
  437. //     pGrid - Points to a CXTPPropertyGrid object
  438. //-----------------------------------------------------------------------
  439. CXTPPropertyGridCoolTheme(CXTPPropertyGrid* pGrid);
  440. //-----------------------------------------------------------------------
  441. // Summary:
  442. //     This method is called to draw single item of the grid.
  443. // Parameters:
  444. //     lpDrawItemStruct - A long pointer to a DRAWITEMSTRUCT structure
  445. //     that contains information about the type of drawing required.
  446. //-----------------------------------------------------------------------
  447. virtual void DrawItem(PDRAWITEMSTRUCT lpDrawItemStruct);
  448. //-------------------------------------------------------------------------
  449. // Summary:
  450. //     This method is called to refresh the visual metrics of the
  451. //     property grid.
  452. //-------------------------------------------------------------------------
  453. void RefreshMetrics();
  454. };
  455. //===========================================================================
  456. // Summary:
  457. //     CXTPPropertyGridSimpleTheme is a CXTPPropertyGridPaintManager derived
  458. //     class.  This represents a Simple style theme.
  459. //===========================================================================
  460. class _XTP_EXT_CLASS CXTPPropertyGridSimpleTheme : public CXTPPropertyGridPaintManager
  461. {
  462. public:
  463. //-----------------------------------------------------------------------
  464. // Summary:
  465. //     Constructs a CXTPPropertyGridSimpleTheme object.
  466. // Parameters:
  467. //     pGrid - Points to a CXTPPropertyGrid object
  468. //-----------------------------------------------------------------------
  469. CXTPPropertyGridSimpleTheme(CXTPPropertyGrid* pGrid);
  470. //-----------------------------------------------------------------------
  471. // Summary:
  472. //     This method is called to draw single item of the grid.
  473. // Parameters:
  474. //     lpDrawItemStruct - A long pointer to a DRAWITEMSTRUCT structure
  475. //     that contains information about the type of drawing required.
  476. //-----------------------------------------------------------------------
  477. virtual void DrawItem(PDRAWITEMSTRUCT lpDrawItemStruct);
  478. //-------------------------------------------------------------------------
  479. // Summary:
  480. //     This method is called to refresh the visual metrics of the
  481. //     property grid.
  482. //-------------------------------------------------------------------------
  483. void RefreshMetrics();
  484. };
  485. //===========================================================================
  486. // Summary:
  487. //     CXTPPropertyGridDelphiTheme is a CXTPPropertyGridPaintManager derived
  488. //     class.  This represents a Delphi style theme.
  489. //===========================================================================
  490. class _XTP_EXT_CLASS CXTPPropertyGridDelphiTheme : public CXTPPropertyGridPaintManager
  491. {
  492. public:
  493. //-----------------------------------------------------------------------
  494. // Summary:
  495. //     Constructs a CXTPPropertyGridDelphiTheme object.
  496. // Parameters:
  497. //     pGrid - Points to a CXTPPropertyGrid object
  498. //-----------------------------------------------------------------------
  499. CXTPPropertyGridDelphiTheme(CXTPPropertyGrid* pGrid);
  500. //-----------------------------------------------------------------------
  501. // Summary:
  502. //     This method is called to draw single item of the grid.
  503. // Parameters:
  504. //     lpDrawItemStruct - A long pointer to a DRAWITEMSTRUCT structure
  505. //     that contains information about the type of drawing required.
  506. //-----------------------------------------------------------------------
  507. virtual void DrawItem(PDRAWITEMSTRUCT lpDrawItemStruct);
  508. //-------------------------------------------------------------------------
  509. // Summary:
  510. //     This method is called to refresh the visual metrics of the
  511. //     property grid.
  512. //-------------------------------------------------------------------------
  513. virtual void RefreshMetrics();
  514. };
  515. //===========================================================================
  516. // Summary:
  517. //     CXTPPropertyGridWhidbeyTheme is a CXTPPropertyGridPaintManager derived
  518. //     class.  This represents a Visual Studio 2005 "Whidbey" style theme.
  519. //===========================================================================
  520. class _XTP_EXT_CLASS CXTPPropertyGridWhidbeyTheme : public CXTPPropertyGridPaintManager
  521. {
  522. public:
  523. //-----------------------------------------------------------------------
  524. // Summary:
  525. //     Constructs a CXTPPropertyGridWhidbeyTheme object.
  526. // Parameters:
  527. //     pGrid - Points to a CXTPPropertyGrid object
  528. //-----------------------------------------------------------------------
  529. CXTPPropertyGridWhidbeyTheme(CXTPPropertyGrid* pGrid);
  530. protected:
  531. //-----------------------------------------------------------------------
  532. // Summary:
  533. //     This member is called to draw the bounding rectangle for a
  534. //     category caption.
  535. // Parameters:
  536. //     pDC - Reference to a valid device context
  537. //     rc  - Bounding rectangle of Category's caption.
  538. //-----------------------------------------------------------------------
  539. void DrawCategoryCaptionBackground(CDC* pDC, CXTPPropertyGridItem* pItem, CRect rc);
  540. //-------------------------------------------------------------------------
  541. // Summary:
  542. //     This method is called to refresh the visual metrics of the
  543. //     property grid.
  544. //-------------------------------------------------------------------------
  545. void RefreshMetrics();
  546. //-----------------------------------------------------------------------
  547. // Summary:
  548. //     This method is called to draw expand buttons of the grid.
  549. // Parameters:
  550. //     dc        - Reference to a valid device context
  551. //     pItem     - Points to a CXTPPropertyGridItem object
  552. //     rcCaption - Caption button rectangle.
  553. //-----------------------------------------------------------------------
  554. void DrawExpandButton(CDC& dc, CXTPPropertyGridItem* pItem, CRect rcCaption);
  555. };
  556. }
  557. using namespace XTPPropertyGridPaintThemes;
  558. AFX_INLINE CXTPPropertyGridItemMetrics* CXTPPropertyGridPaintManager::GetItemMetrics() const {
  559. return m_pMetrics;
  560. }
  561. #endif // !defined(_XTPPROPERTYGRIDPAINTMANAGER_H__)