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

对话框与窗口

开发平台:

Visual C++

  1. // XTHeaderCtrlTheme.h: interface for the CXTHeaderCtrlTheme class.
  2. //
  3. // This file is a part of the XTREME CONTROLS 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(__XTHEADERCTRLTHEME_H__)
  22. #define __XTHEADERCTRLTHEME_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTThemeManager.h"
  28. #include "Common/XTPWinThemeWrapper.h"
  29. class CXTHeaderCtrl;
  30. DECLARE_THEME_FACTORY(CXTHeaderCtrlTheme)
  31. // -----------------------------------------------------------------------
  32. // Summary:
  33. //     CXTHeaderCtrlTheme is a theme class used to draw windows classic style
  34. //     theme for the header control.<p/>
  35. // Remarks:
  36. //     The CXTHeaderCtrlTheme class provides theme capability to the CXTHeaderCtrl
  37. //     class. You can derive a class from CXTHeaderCtrlTheme to custom user
  38. //     defined themes.<p/>
  39. //
  40. //     To use this class, first subclass your header control using the
  41. //     Windows API SubclassWindow and a CXTHeaderCtrl base class. Once
  42. //     you have done this you can call SetTheme and pass in a pointer to
  43. //     the theme you wish to use for the header control.
  44. // -----------------------------------------------------------------------
  45. class _XTP_EXT_CLASS CXTHeaderCtrlTheme : public CXTThemeManagerStyle
  46. {
  47. public:
  48. //--------------------------------------------------------------------
  49. // Summary:
  50. //     Constructs a CXTHeaderCtrlTheme object using the specified
  51. //     header control.
  52. //--------------------------------------------------------------------
  53. CXTHeaderCtrlTheme();
  54. //--------------------------------------------------------------------
  55. // Summary:
  56. //     Destroys a CXTHeaderCtrlTheme object, handles cleanup and
  57. //     deallocation.
  58. //--------------------------------------------------------------------
  59. virtual ~CXTHeaderCtrlTheme();
  60. public:
  61. //--------------------------------------------------------------------
  62. // Summary:
  63. //     Call this member function to return a pointer to the Windows
  64. //     theme API wrapper for this control.
  65. // Returns:
  66. //     A CXTPWinThemeWrapper pointer.
  67. //--------------------------------------------------------------------
  68. CXTPWinThemeWrapper* GetThemeWrapper();
  69. // ---------------------------------------------------------------------------------
  70. // Summary:
  71. //     Call this member function from the header control's WM_PAINT
  72. //     message to perform themed drawing.
  73. // Parameters:
  74. //     pDC -          Pointer to a valid device context.
  75. //     pHeaderCtrl -  Points to a CXTHeaderCtrl object.
  76. // Remarks:
  77. //     Called by the CXTHeaderCtrlTheme class to render the header for the CXTHeaderCtrl
  78. //     object.
  79. // ---------------------------------------------------------------------------------
  80. virtual void DrawHeader(CDC* pDC, CXTHeaderCtrl* pHeaderCtrl);
  81. //--------------------------------------------------------------------
  82. // Summary:
  83. //     Call this member whenever the system colors need to be updated.
  84. //--------------------------------------------------------------------
  85. virtual void RefreshMetrics();
  86. //--------------------------------------------------------------------
  87. // Summary:
  88. //     This member function can be called to determine if Windows XP
  89. //     themes can be displayed for the header control.
  90. // Parameters:
  91. //     pHeaderCtrl -  Points to a CXTHeaderCtrl object.
  92. // Returns:
  93. //     TRUE if Windows themes can be displayed, otherwise FALSE.
  94. //--------------------------------------------------------------------
  95. virtual BOOL UseWinXPThemes(CXTHeaderCtrl* pHeaderCtrl);
  96. // ---------------------------------------------------------------------------
  97. // Summary:
  98. //     Call this member function to set the desired XTTHEME_ drawing styles
  99. //     for the header theme.
  100. // Parameters:
  101. //     dwDrawStyle -  The desired styles for the header control theme. Can be
  102. //                    one or more of the values listed in the remarks section.
  103. //     pHeaderCtrl -  Pointer to a CXTHeaderCtrl object.
  104. // Remarks:
  105. //     Does not affect the WS_ (window style) settings. Styles to be
  106. //     added or removed can be combined by using the bitwise OR (|)
  107. //     operator. It can be one or more of the following:
  108. //
  109. //     * <b>XTTHEME_WINXPTHEMES</b> Allows the header control to
  110. //           display Windows XP themes when they are available.
  111. //     * <b>XTTHEME_HOTTRACKING</b> Allows the header control to
  112. //           display mouse over effects for the header control.
  113. //     * <b>XTTHEME_SORTARROW</b> Allows the header control to
  114. //           display a sort arrow to indicate sort order.
  115. // See Also:
  116. //     GetDrawStyle
  117. // ---------------------------------------------------------------------------
  118. virtual void SetDrawStyle(DWORD dwDrawStyle, CXTHeaderCtrl* pHeaderCtrl);
  119. //--------------------------------------------------------------------
  120. // Summary:
  121. //     Call this member function to return the current drawing style
  122. //     used by the header theme.
  123. // Returns:
  124. //     The current XTTHEME_ (xt theme) settings for the header control.
  125. //     See SetDrawStyle for the complete list of available styles.
  126. // See Also:
  127. //     SetDrawStyle
  128. //--------------------------------------------------------------------
  129. virtual DWORD GetDrawStyle() const;
  130. //--------------------------------------------------------------------
  131. // Summary:
  132. //     Retrieves the size and position of a header control within a
  133. //     given rectangle. This function is used to determine the
  134. //     appropriate dimensions for a new header control that is to
  135. //     occupy the given rectangle.
  136. // Parameters:
  137. //     lpHDL - Pointer to an HDLAYOUT structure, which contains
  138. //             information used to set the size and position of a
  139. //             header control.
  140. //     pHeaderCtrl -  Points to a CXTHeaderCtrl object.
  141. // Returns:
  142. //     Nonzero if successful; otherwise 0.
  143. //--------------------------------------------------------------------
  144. virtual BOOL Layout(LPHDLAYOUT lpHDL, CXTHeaderCtrl* pHeaderCtrl);
  145. // -------------------------------------------------------------------
  146. // Summary:
  147. //     Cleans up allocated GDI resources used by the theme.
  148. // Parameters:
  149. //     pHeaderCtrl -  Points to a CXTHeaderCtrl object.
  150. // Remarks:
  151. //     The CXTHeaderCtrlTheme class calls this member function to free GDI
  152. //     resources that have been allocated during draw routines.
  153. // -------------------------------------------------------------------
  154. virtual void CleanUp(CXTHeaderCtrl* pHeaderCtrl);
  155. //--------------------------------------------------------------------
  156. // Summary:
  157. //     Call this member function to set the bitmap image for the
  158. //     specified header item.
  159. // Parameters:
  160. //     iCol      - Zero-based index of the column to set the sort
  161. //                 image for.
  162. //     uBitmapID - Resource ID of the bitmap to use.
  163. //     bRemove   - TRUE to remove a bitmap, FALSE if adding a bitmap.
  164. //     crMask    - Color used to generate the mask. Each pixel of
  165. //                 this color in the given bitmap is changed to black
  166. //                 and the corresponding bit in the mask is set to one.
  167. //     pHeaderCtrl -  Points to a CXTHeaderCtrl object.
  168. // Returns:
  169. //     TRUE if successful; otherwise FALSE.
  170. //--------------------------------------------------------------------
  171. virtual BOOL SetBitmap(int iCol, UINT uBitmapID, BOOL bRemove, COLORREF crMask, CXTHeaderCtrl* pHeaderCtrl);
  172. //--------------------------------------------------------------------
  173. // Summary:
  174. //     Call this member function to determine if the header control displays
  175. //     a sort arrow.
  176. // Returns:
  177. //     TRUE if the header control displays a sort arrow, otherwise returns FALSE.
  178. //--------------------------------------------------------------------
  179. BOOL HasSortArrow();
  180. protected:
  181. // -------------------------------------------------------------------------
  182. // Summary:
  183. //     This member function is called by the theme to draw the header
  184. //     control's background.
  185. // Parameters:
  186. //     lpDIS :  A long pointer to a DRAWITEMSTRUCT structure. The structure
  187. //              contains information about the item to be drawn and the type
  188. //              of drawing required.
  189. // -------------------------------------------------------------------------
  190. virtual void OnDrawBackground(LPDRAWITEMSTRUCT lpDIS);
  191. //--------------------------------------------------------------------
  192. // Summary:
  193. //     This member function is called by the theme to draw the header
  194. //     control's background using Windows themes.
  195. // Parameters:
  196. //     lpDIS - A long pointer to a DRAWITEMSTRUCT structure. The
  197. //             structure contains information about the item to be
  198. //             drawn and the type of drawing required.
  199. // Returns:
  200. //     TRUE if successful; otherwise FALSE.
  201. //--------------------------------------------------------------------
  202. virtual BOOL OnDrawBackgroundWinThemed(LPDRAWITEMSTRUCT lpDIS);
  203. //--------------------------------------------------------------------
  204. // Summary:
  205. //     This member function is called by the theme to draw the background
  206. //     for the header item specified by lpDIS->itemID.
  207. // Parameters:
  208. //     lpDIS - A long pointer to a DRAWITEMSTRUCT structure. The
  209. //             structure contains information about the item to be
  210. //             drawn and the type of drawing required.
  211. //--------------------------------------------------------------------
  212. virtual void OnDrawItemBackground(LPDRAWITEMSTRUCT lpDIS);
  213. //--------------------------------------------------------------------
  214. // Summary:
  215. //     This member function is called by the theme to draw the background
  216. //     using Windows themes for the header item specified by lpDIS->itemID.
  217. // Parameters:
  218. //     lpDIS - A long pointer to a DRAWITEMSTRUCT structure. The
  219. //             structure contains information about the item to be
  220. //             drawn and the type of drawing required.
  221. // Returns:
  222. //     TRUE if successful; otherwise FALSE.
  223. //--------------------------------------------------------------------
  224. virtual BOOL OnDrawItemBackgroundWinThemed(LPDRAWITEMSTRUCT lpDIS);
  225. //--------------------------------------------------------------------
  226. // Summary:
  227. //     This member function is called by the theme to draw the sort
  228. //     used to display sort order for header item specified by lpDIS->itemID.
  229. // Parameters:
  230. //     lpDIS      - A long pointer to a DRAWITEMSTRUCT structure. The
  231. //                  structure contains information about the item to be
  232. //                  drawn and the type of drawing required.
  233. //     bAscending - TRUE if the arrow is to be draw ascending.
  234. //--------------------------------------------------------------------
  235. virtual void OnDrawItemSortArrow(LPDRAWITEMSTRUCT lpDIS, BOOL bAscending);
  236. //--------------------------------------------------------------------
  237. // Summary:
  238. //     This member function is called to draw the text for the header
  239. //     item specified by lpDIS->itemID.
  240. // Parameters:
  241. //     lpDIS - A long pointer to a DRAWITEMSTRUCT structure. The
  242. //             structure contains information about the item to be
  243. //             drawn and the type of drawing required.
  244. //     pHeaderCtrl -  Points to a CXTHeaderCtrl object.
  245. //--------------------------------------------------------------------
  246. virtual void OnDrawItemText(LPDRAWITEMSTRUCT lpDIS, CXTHeaderCtrl* pHeaderCtrl);
  247. //--------------------------------------------------------------------
  248. // Summary:
  249. //     This member function is called to draw a bitmap for the header
  250. //     item specified by lpDIS->itemID.
  251. // Parameters:
  252. //     lpDIS  - A long pointer to a DRAWITEMSTRUCT structure. The
  253. //              structure contains information about the item to be
  254. //              drawn and the type of drawing required.
  255. //     rcText - Size of the area where the header item text is displayed.
  256. //     pHeaderCtrl -  Points to a CXTHeaderCtrl object.
  257. //--------------------------------------------------------------------
  258. virtual void OnDrawItemBitmap(LPDRAWITEMSTRUCT lpDIS, CRect& rcText, CXTHeaderCtrl* pHeaderCtrl);
  259. //--------------------------------------------------------------------
  260. // Summary:
  261. //     This member function is called by CXTHeaderCtrlTheme::OnDrawItemSortArrow
  262. //     to draw the sort arrow.
  263. // Parameters:
  264. //     pDC        - Pointer to a valid device context.
  265. //     ptsArrow   - POINT array used to define the 3 points of the arrow drawn.
  266. //     bAscending - TRUE if the arrow is to be draw ascending.
  267. //--------------------------------------------------------------------
  268. virtual void DrawSortArrow(CDC* pDC, LPPOINT ptsArrow, BOOL bAscending);
  269. protected:
  270. int                 m_iArrowPadding; // Spacing between text and sort arrow.
  271. DWORD               m_dwDrawStyle;   // Style flags used by theme, see CXTHeaderCtrlTheme::SetDrawStyle().
  272. BOOL                m_bUseWinThemes; // TRUE to use Windows XP themes when available.
  273. CSize               m_sizePadding;   // Leading and trailing padding for text display.
  274. CSize               m_sizeArrow;     // Width and height of sort arrow.
  275. COLORREF            m_crText;        // RGB value for text color.
  276. COLORREF            m_cr3DFace;      // RGB value for header background color.
  277. COLORREF            m_cr3DShadow;    // RGB value for border shadow color.
  278. COLORREF            m_cr3DDkShadow;  // RGB value for border dark shadow color.
  279. COLORREF            m_cr3DHighLight; // RGB value for border highlight color.
  280. CXTPWinThemeWrapper m_themeWrapper;  // Wraps the Windows XP theme API that is used to display Windows XP themes.
  281. };
  282. //{{AFX_CODEJOCK_PRIVATE
  283. #define CXTHeaderTheme CXTHeaderCtrlTheme // deprecated
  284. //}}AFX_CODEJOCK_PRIVATE
  285. AFX_INLINE CXTPWinThemeWrapper* CXTHeaderCtrlTheme::GetThemeWrapper() {
  286. return &m_themeWrapper;
  287. }
  288. // -------------------------------------------------------------------------------
  289. // Summary:
  290. //     CXTHeaderCtrlThemeOfficeXP is a CXTHeaderCtrlTheme derived theme class
  291. //     used to draw an Office XP style theme for the header control.<p/>
  292. // Remarks:
  293. //     The CXTHeaderCtrlThemeOfficeXP class provides theme capability to the CXTHeaderCtrl
  294. //     class. You can derive a class from CXTHeaderCtrlThemeOfficeXP to
  295. //     custom user defined themes.<p/>
  296. //
  297. //     To use this class, first subclass your header control using the
  298. //     Windows API SubclassWindow and a CXTHeaderCtrl base class. Once
  299. //     you have done this you can call SetTheme and pass in a pointer to
  300. //     the theme you wish to use for the header control.
  301. // -------------------------------------------------------------------------------
  302. class _XTP_EXT_CLASS CXTHeaderCtrlThemeOfficeXP : public CXTHeaderCtrlTheme
  303. {
  304. public:
  305. //--------------------------------------------------------------------
  306. // Summary:
  307. //     Constructs a CXTHeaderCtrlThemeOfficeXP object using the specified
  308. //     header control.
  309. // Parameters:
  310. //     pHeaderCtrl - Pointer to the header control to be themed.
  311. //--------------------------------------------------------------------
  312. CXTHeaderCtrlThemeOfficeXP();
  313. //--------------------------------------------------------------------
  314. // Summary:
  315. //     Destroys a CXTHeaderCtrlThemeOfficeXP object, handles cleanup and
  316. //     deallocation.
  317. //--------------------------------------------------------------------
  318. virtual ~CXTHeaderCtrlThemeOfficeXP();
  319. protected:
  320. //--------------------------------------------------------------------
  321. // Summary:
  322. //     This member function is called by the theme to draw the header
  323. //     control's background.
  324. // Parameters:
  325. //     lpDIS - A long pointer to a DRAWITEMSTRUCT structure. The
  326. //             structure contains information about the item to be
  327. //             drawn and the type of drawing required.
  328. //--------------------------------------------------------------------
  329. virtual void OnDrawBackground(LPDRAWITEMSTRUCT lpDIS);
  330. //--------------------------------------------------------------------
  331. // Summary:
  332. //     This member function is called by the theme to draw the background
  333. //     for the header item specified by lpDIS->itemID.
  334. // Parameters:
  335. //     lpDIS - A long pointer to a DRAWITEMSTRUCT structure. The
  336. //             structure contains information about the item to be
  337. //             drawn and the type of drawing required.
  338. //--------------------------------------------------------------------
  339. virtual void OnDrawItemBackground(LPDRAWITEMSTRUCT lpDIS);
  340. };
  341. //{{AFX_CODEJOCK_PRIVATE
  342. #define CXTHeaderThemeOfficeXP CXTHeaderCtrlThemeOfficeXP // deprecated
  343. //}}AFX_CODEJOCK_PRIVATE
  344. // -----------------------------------------------------------------------
  345. // Summary:
  346. //     CXTHeaderCtrlThemeOffice2003 is a CXTHeaderCtrlTheme derived theme class
  347. //     used to draw an Office 2003 style theme for the header control.<p/>
  348. // Remarks:
  349. //     The CXTHeaderCtrlThemeOffice2003 class provides theme capability to
  350. //     the CXTHeaderCtrl class. You can derive a class from
  351. //     CXTHeaderCtrlThemeOffice2003 to custom user defined themes.<p/>
  352. //
  353. //     To use this class, first subclass your header control using the
  354. //     Windows API SubclassWindow and a CXTHeaderCtrl base class. Once
  355. //     you have done this you can call SetTheme and pass in a pointer to
  356. //     the theme you wish to use for the header control.
  357. // -----------------------------------------------------------------------
  358. class _XTP_EXT_CLASS CXTHeaderCtrlThemeOffice2003 : public CXTHeaderCtrlTheme
  359. {
  360. public:
  361. //--------------------------------------------------------------------
  362. // Summary:
  363. //     Constructs a CXTHeaderCtrlThemeOffice2003 object using the specified
  364. //     header control.
  365. // Parameters:
  366. //     pHeaderCtrl - Pointer to the header control to be themed.
  367. //--------------------------------------------------------------------
  368. CXTHeaderCtrlThemeOffice2003();
  369. //--------------------------------------------------------------------
  370. // Summary:
  371. //     Destroys a CXTHeaderCtrlThemeOffice2003 object, handles cleanup and
  372. //     deallocation.
  373. //--------------------------------------------------------------------
  374. virtual ~CXTHeaderCtrlThemeOffice2003();
  375. //--------------------------------------------------------------------
  376. // Summary:
  377. //     Retrieves the size and position of a header control within a
  378. //     given rectangle. This function is used to determine the
  379. //     appropriate dimensions for a new header control that is to
  380. //     occupy the given rectangle.
  381. // Parameters:
  382. //     lpHDL - Pointer to anHDLAYOUT structure, which contains
  383. //             information used to set the size and position of a
  384. //             header control.
  385. //     pHeaderCtrl -  Points to a CXTHeaderCtrl object.
  386. // Returns:
  387. //     Nonzero if successful; otherwise 0.
  388. //--------------------------------------------------------------------
  389. virtual BOOL Layout(LPHDLAYOUT lpHDL, CXTHeaderCtrl* pHeaderCtrl);
  390. protected:
  391. //--------------------------------------------------------------------
  392. // Summary:
  393. //     This member function is called by the theme to draw the header
  394. //     control's background.
  395. // Parameters:
  396. //     lpDIS - A long pointer to a DRAWITEMSTRUCT structure. The
  397. //             structure contains information about the item to be
  398. //             drawn and the type of drawing required.
  399. //--------------------------------------------------------------------
  400. virtual void OnDrawBackground(LPDRAWITEMSTRUCT lpDIS);
  401. //--------------------------------------------------------------------
  402. // Summary:
  403. //     This member function is called by the theme to draw the background
  404. //     for the header item specified by lpDIS->itemID.
  405. // Parameters:
  406. //     lpDIS - A long pointer to a DRAWITEMSTRUCT structure. The
  407. //             structure contains information about the item to be
  408. //             drawn and the type of drawing required.
  409. //--------------------------------------------------------------------
  410. virtual void OnDrawItemBackground(LPDRAWITEMSTRUCT lpDIS);
  411. private:
  412. COLORREF MixColor(COLORREF clrLight, COLORREF clrDark, double dFactor);
  413. };
  414. //{{AFX_CODEJOCK_PRIVATE
  415. #define CXTHeaderThemeOffice2003 CXTHeaderCtrlThemeOffice2003 // deprecated
  416. //}}AFX_CODEJOCK_PRIVATE
  417. // -------------------------------------------------------------------------------
  418. // Summary:
  419. //     CXTHeaderCtrlThemeExplorer is a CXTHeaderCtrlThemeOffice2003 derived theme
  420. //     class used to draw an Office XP style theme for the header
  421. //     control.<p/>
  422. // Remarks:
  423. //     The CXTHeaderCtrlThemeExplorer class provides theme capability to the CXTHeaderCtrl
  424. //     class. You can derive a class from CXTHeaderCtrlThemeExplorer to
  425. //     custom user defined themes.<p/>
  426. //
  427. //     To use this class, first subclass your header control using the
  428. //     Windows API SubclassWindow and a CXTHeaderCtrl base class. Once
  429. //     you have done this you can call SetTheme and pass in a pointer to
  430. //     the theme you wish to use for the header control.
  431. // -------------------------------------------------------------------------------
  432. class _XTP_EXT_CLASS CXTHeaderCtrlThemeExplorer : public CXTHeaderCtrlThemeOffice2003
  433. {
  434. public:
  435. //--------------------------------------------------------------------
  436. // Summary:
  437. //     Constructs a CXTHeaderCtrlThemeExplorer object using the specified
  438. //     header control.
  439. // Parameters:
  440. //     pHeaderCtrl - Pointer to the header control to be themed.
  441. //--------------------------------------------------------------------
  442. CXTHeaderCtrlThemeExplorer();
  443. //--------------------------------------------------------------------
  444. // Summary:
  445. //     Destroys a CXTHeaderCtrlThemeExplorer object, handles cleanup and
  446. //     deallocation.
  447. //--------------------------------------------------------------------
  448. virtual ~CXTHeaderCtrlThemeExplorer();
  449. //--------------------------------------------------------------------
  450. // Summary:
  451. //     Retrieves the size and position of a header control within a
  452. //     given rectangle. This function is used to determine the
  453. //     appropriate dimensions for a new header control that is to
  454. //     occupy the given rectangle.
  455. // Parameters:
  456. //     lpHDL - Pointer to anHDLAYOUT structure, which contains
  457. //             information used to set the size and position of a
  458. //             header control.
  459. //     pHeaderCtrl -  Points to a CXTHeaderCtrl object.
  460. // Returns:
  461. //     Nonzero if successful; otherwise 0.
  462. //--------------------------------------------------------------------
  463. virtual BOOL Layout(LPHDLAYOUT lpHDL, CXTHeaderCtrl* pHeaderCtrl);
  464. protected:
  465. //--------------------------------------------------------------------
  466. // Summary:
  467. //     This member function is called by the theme to draw the background
  468. //     using Windows themes for the header item specified by lpDIS->itemID.
  469. // Parameters:
  470. //     lpDIS - A long pointer to a DRAWITEMSTRUCT structure. The
  471. //             structure contains information about the item to be
  472. //             drawn and the type of drawing required.
  473. // Returns:
  474. //     TRUE if successful; otherwise FALSE.
  475. //--------------------------------------------------------------------
  476. virtual BOOL OnDrawItemBackgroundWinThemed(LPDRAWITEMSTRUCT lpDIS);
  477. //--------------------------------------------------------------------
  478. // Summary:
  479. //     This member function is called by CXTHeaderCtrlTheme::OnDrawItemSortArrow
  480. //     to draw the sort arrow.
  481. // Parameters:
  482. //     pDC        - Pointer to a valid device context.
  483. //     ptsArrow   - POINT array used to define the 3 points of the arrow drawn.
  484. //     bAscending - TRUE if the arrow is to be draw ascending.
  485. //--------------------------------------------------------------------
  486. virtual void DrawSortArrow(CDC* pDC, LPPOINT ptsArrow, BOOL bAscending);
  487. };
  488. //{{AFX_CODEJOCK_PRIVATE
  489. #define CXTHeaderThemeExplorer CXTHeaderCtrlThemeExplorer // deprecated
  490. //}}AFX_CODEJOCK_PRIVATE
  491. //========================================================================
  492. //{{AFX_CODEJOCK_PRIVATE
  493. #ifndef ODS_HOTLIGHT
  494. #define ODS_HOTLIGHT        0x0040
  495. #endif//ODS_HOTLIGHT
  496. //}}AFX_CODEJOCK_PRIVATE
  497. const DWORD XTTHEME_WINXPTHEMES = 0x0001; //<ALIAS CXTHeaderCtrlTheme::SetDrawStyle@DWORD@CXTHeaderCtrl*>
  498. const DWORD XTTHEME_HOTTRACKING = 0x0002; //<ALIAS CXTHeaderCtrlTheme::SetDrawStyle@DWORD@CXTHeaderCtrl*>
  499. const DWORD XTTHEME_SORTARROW   = 0x0004; //<ALIAS CXTHeaderCtrlTheme::SetDrawStyle@DWORD@CXTHeaderCtrl*>
  500. //========================================================================
  501. AFX_INLINE BOOL CXTHeaderCtrlTheme::HasSortArrow() {
  502. return ((m_dwDrawStyle & XTTHEME_SORTARROW) == XTTHEME_SORTARROW);
  503. }
  504. AFX_INLINE COLORREF CXTHeaderCtrlThemeOffice2003::MixColor(COLORREF clrLight, COLORREF clrDark, double dFactor) {
  505. return RGB(
  506. GetRValue(clrLight) - dFactor * (GetRValue(clrLight) - GetRValue(clrDark)),
  507. GetGValue(clrLight) - dFactor * (GetGValue(clrLight) - GetGValue(clrDark)),
  508. GetBValue(clrLight) - dFactor * (GetBValue(clrLight) - GetBValue(clrDark)));
  509. }
  510. //========================================================================
  511. #endif // !defined(__XTHEADERCTRLTHEME_H__)