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

对话框与窗口

开发平台:

Visual C++

  1. // XTColorPageStandard.h : header file
  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(__XTCOLORSTANDARD_H__)
  22. #define __XTCOLORSTANDARD_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. //===========================================================================
  28. // Summary:
  29. //     CXTColorHex is a CStatic derived class. It displays a color selection
  30. //     grid used by CXTColorPageStandard.
  31. //===========================================================================
  32. class _XTP_EXT_CLASS CXTColorHex : public CStatic
  33. {
  34. // ----------------------------------------------------------------------
  35. // Summary:
  36. //     HEXCOLOR_CELL structure is used by the CXTColorHex class
  37. //     to maintain information about a particular color cell.
  38. // See Also:
  39. //     CXTColorHex
  40. // ----------------------------------------------------------------------
  41. struct HEXCOLOR_CELL
  42. {
  43. int      direction[4]; // Array that indicates which cell index is to the left, top, right, and bottom of the color cell.
  44. BOOL     bSmall;       // TRUE if the color cell is a standard selection rectangle.
  45. CPoint*  pPoint;       // Represents the current cursor position.
  46. COLORREF clr;          // An RGB value.
  47. };
  48. // ----------------------------------------------------------------------
  49. // Summary:
  50. //     List for maintaining HEXCOLOR_CELL structures.
  51. // Remarks:
  52. //     CList definition used by the CXTColorHex control to maintain
  53. //     a list of HEXCOLOR_CELL structures representing each color cell in
  54. //     the hex color control.
  55. // See Also:
  56. //     CXTColorHex, HEXCOLOR_CELL
  57. // ----------------------------------------------------------------------
  58. typedef CList<HEXCOLOR_CELL*, HEXCOLOR_CELL*> CHexColorCellList;
  59. public:
  60. //-----------------------------------------------------------------------
  61. // Summary:
  62. //     Constructs a CXTColorHex object
  63. //-----------------------------------------------------------------------
  64. CXTColorHex();
  65. //-----------------------------------------------------------------------
  66. // Summary:
  67. //     Destroys a CXTColorHex object, handles cleanup and deallocation
  68. //-----------------------------------------------------------------------
  69. virtual ~CXTColorHex();
  70. public:
  71. // ----------------------------------------------------------------------
  72. // Summary:
  73. //     Retrieves a COLORREF value from a specified point.
  74. // Parameters:
  75. //     point -  XY location of the color to retrieve RGB information for.
  76. // Remarks:
  77. //     Call this member function to retrieve RGB information for the
  78. //     color found at the location specified by point. Returns a COLORREF
  79. //     value.
  80. // ----------------------------------------------------------------------
  81. COLORREF ColorFromPoint(CPoint point);
  82. // ----------------------------------------------------------------------
  83. // Summary:
  84. //     Retrieves HEXCOLOR_CELL information for a color cell.
  85. // Parameters:
  86. //     clr -  An RGB value that represents the color.
  87. // Remarks:
  88. //     Call this member function to get a pointer to the HEXCOLOR_CELL
  89. //     structure that is represented by 'clr'.
  90. // Returns:
  91. //     A pointer to an HEXCOLOR_CELL struct.
  92. // ----------------------------------------------------------------------
  93. HEXCOLOR_CELL* GetColorCell(COLORREF clr);
  94. //-----------------------------------------------------------------------
  95. // Summary:
  96. //     Call this member function to select the color specified by 'iIndex'.
  97. // Parameters:
  98. //     iIndex - Index into m_arCells list.
  99. //     clr - An RGB value that represents the color.
  100. //-----------------------------------------------------------------------
  101. void SetSelectedColor(int iIndex);
  102. void SetSelectedColor(COLORREF clr); //<combine CXTColorHex::SetSelectedColor@int>
  103. //-----------------------------------------------------------------------
  104. // Summary:
  105. //     Call this member function to return the currently selected color.
  106. // Returns:
  107. //     An RGB color value that represents the selected color.
  108. //-----------------------------------------------------------------------
  109. COLORREF GetSelectedColor() const;
  110. protected:
  111. //-----------------------------------------------------------------------
  112. // Summary:
  113. //     This member function is called by the CXTColorHex class to
  114. //     perform initialization when the window is created or sub-classed.
  115. // Returns:
  116. //     TRUE if the window was successfully initialized, otherwise FALSE.
  117. //-----------------------------------------------------------------------
  118. virtual bool Init();
  119. //-----------------------------------------------------------------------
  120. // Summary:
  121. //     This member function is called by the class to draw a single color cell.
  122. // Parameters:
  123. //     pDC   - A CDC pointer that represents the current device context.
  124. //     point - XY position of the starting point for the first pixel drawn.
  125. //     clr   - An RGB value that represents the color of the cell to draw.
  126. //     l     - Index of the cell to be selected when VK_LEFT is pressed.
  127. //     u     - Index of the cell to be selected when VK_UP is pressed.
  128. //     r     - Index of the cell to be selected when VK_RIGHT is pressed.
  129. //     d     - Index of the cell to be selected when VK_DOWN is pressed.
  130. //-----------------------------------------------------------------------
  131. void DrawCell(CDC* pDC, CPoint point, COLORREF clr, int l, int u, int r, int d);
  132. //-----------------------------------------------------------------------
  133. // Summary:
  134. //     This member function is called by the class to draw a single large
  135. //     color cell.
  136. // Parameters:
  137. //     pDC   - A CDC pointer that represents the current device context.
  138. //     point - XY position of the starting point for the first pixel drawn.
  139. //     clr   - An RGB value that represents the color of the cell to draw.
  140. //     l     - Index of the cell to be selected when VK_LEFT is pressed.
  141. //     u     - Index of the cell to be selected when VK_UP is pressed.
  142. //     r     - Index of the cell to be selected when VK_RIGHT is pressed.
  143. //     d     - Index of the cell to be selected when VK_DOWN is pressed.
  144. //-----------------------------------------------------------------------
  145. void DrawLargeCell(CDC* pDC, CPoint point, COLORREF clr, int l, int u, int r, int d);
  146. //-----------------------------------------------------------------------
  147. // Summary:
  148. //     This member function is called to draw the selection window.
  149. // Parameters:
  150. //     pDC - A CDC pointer that represents the current device context.
  151. //-----------------------------------------------------------------------
  152. void DrawColorSelector(CDC* pDC);
  153. //-----------------------------------------------------------------------
  154. // Summary:
  155. //     This member function is called to select a color cell if any
  156. //     are selected.
  157. // Parameters:
  158. //     pDC - A CDC pointer that represents the current device context.
  159. //-----------------------------------------------------------------------
  160. void DrawSelectCell(CDC* pDC);
  161. //-----------------------------------------------------------------------
  162. // Summary:
  163. //     This member function is called to select a large color cell if any
  164. //     are selected.
  165. // Parameters:
  166. //     pDC - A CDC pointer that represents the current device context.
  167. //-----------------------------------------------------------------------
  168. void DrawLargeSelectCell(CDC* pDC);
  169. //-----------------------------------------------------------------------
  170. // Summary:
  171. //     This member function updates the color selection based on the XY
  172. //     coordinates specified by 'point'.
  173. // Parameters:
  174. //     point - Current location of the color to select.
  175. //-----------------------------------------------------------------------
  176. void UpdateSelection(CPoint point);
  177. //-----------------------------------------------------------------------
  178. // Summary:
  179. //     This member function is called to select a cell when a new
  180. //     selection is made.
  181. // Parameters:
  182. //     pDC - A CDC pointer that represents the current device context.
  183. //-----------------------------------------------------------------------
  184. void SelectColorCell(CDC* pDC);
  185. //-----------------------------------------------------------------------
  186. // Summary:
  187. //     This member function is called to determine if the specified
  188. //      color is defined.
  189. // Parameters:
  190. //     cr - A COLORREF value to check.
  191. // Returns:
  192. //     Returns true if the color specified by cr is defined in the
  193. //      color array otherwise returns false.
  194. //-----------------------------------------------------------------------
  195. virtual bool IsValidColor(COLORREF cr) const;
  196. protected:
  197. //{{AFX_CODEJOCK_PRIVATE
  198. DECLARE_MESSAGE_MAP()
  199. //{{AFX_VIRTUAL(CXTColorHex)
  200. virtual void PreSubclassWindow();
  201. virtual BOOL PreTranslateMessage(MSG* pMsg);
  202. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  203. //}}AFX_VIRTUAL
  204. //{{AFX_MSG(CXTColorHex)
  205. afx_msg void OnPaint();
  206. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  207. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  208. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  209. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  210. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  211. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  212. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  213. //}}AFX_MSG
  214. //}}AFX_CODEJOCK_PRIVATE
  215. protected:
  216. CBitmap           m_bmpPicker;        // Background device context.
  217. bool              m_bPreSubclassInit; // true when initializing from PreSubclassWindow.
  218. BOOL              m_bLBtnDown;        // TRUE when the left mouse button is pressed.
  219. BOOL              m_bSmallCell;       // TRUE when a small color cell is selected.
  220. CPoint            m_ptCurrent;        // Holds the last known selection point.
  221. COLORREF          m_clrColor;         // A COLORREF value that contains the RGB information for the current color.
  222. CHexColorCellList m_arCells;          // Array of HEXCOLOR_CELL structs that represent displayed color cells.
  223. static const COLORREF clrSelArray[];  // Hex colors.
  224. };
  225. //////////////////////////////////////////////////////////////////////
  226. AFX_INLINE COLORREF CXTColorHex::GetSelectedColor() const {
  227. return m_clrColor;
  228. }
  229. //===========================================================================
  230. // Summary:
  231. //     CXTColorPageStandard is derived from CXTThemePropertyPage, it is
  232. //     used to create a CXTColorPageStandard dialog.
  233. //===========================================================================
  234. class _XTP_EXT_CLASS CXTColorPageStandard : public CPropertyPage
  235. {
  236. public:
  237. //-----------------------------------------------------------------------
  238. // Summary:
  239. //     Constructs a CXTColorPageStandard object
  240. // Parameters:
  241. //     pParentSheet - Points to the parent property sheet.
  242. //-----------------------------------------------------------------------
  243. CXTColorPageStandard(CXTColorDialog* pParentSheet = NULL);
  244. //-----------------------------------------------------------------------
  245. // Summary:
  246. //     Destroys a CXTColorPageStandard object, handles cleanup and
  247. //     deallocation
  248. //-----------------------------------------------------------------------
  249. virtual ~CXTColorPageStandard();
  250. //-----------------------------------------------------------------------
  251. // Summary:
  252. //     This member function is called to set the selected color for
  253. //     the page.
  254. // Parameters:
  255. //     clr - An RGB value that represents the color.
  256. //-----------------------------------------------------------------------
  257. void SetColor(COLORREF clr);
  258. protected:
  259. //{{AFX_CODEJOCK_PRIVATE
  260. DECLARE_MESSAGE_MAP()
  261. //{{AFX_VIRTUAL(CXTColorPageStandard)
  262. virtual void DoDataExchange(CDataExchange* pDX);
  263. //}}AFX_VIRTUAL
  264. //{{AFX_MSG(CXTColorPageStandard)
  265. afx_msg LRESULT OnUpdateColor(WPARAM wParam, LPARAM lParam);
  266. //}}AFX_MSG
  267. //{{AFX_DATA(CXTColorPageStandard)
  268. enum { IDD = XT_IDD_COLORSTANDARD };
  269. //}}AFX_DATA
  270. //}}AFX_CODEJOCK_PRIVATE
  271. protected:
  272. CXTColorHex m_colorHex;                // ColorHex control.
  273. CXTColorDialog*     m_pParentSheet; // Points to the parent property sheet
  274. friend class CXTColorHex;
  275. };
  276. //////////////////////////////////////////////////////////////////////
  277. AFX_INLINE void CXTColorPageStandard::SetColor(COLORREF clr) {
  278. m_colorHex.SetSelectedColor(clr);
  279. }
  280. #endif // !defined(__XTCOLORSTANDARD_H__)