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

对话框与窗口

开发平台:

Visual C++

  1. // XTColorPageCustom.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(__XTCOLORCUSTOM_H__)
  22. #define __XTCOLORCUSTOM_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. class CXTColorDialog;
  28. //===========================================================================
  29. // Summary:
  30. //     CXTColorBase is a CStatic derived base class. It is used to create
  31. //     custom color selection windows.
  32. //===========================================================================
  33. class _XTP_EXT_CLASS CXTColorBase : public CStatic
  34. {
  35. public:
  36. // ----------------------------------------------------------------------
  37. // Summary:
  38. //     Enumeration used to determine window focus.
  39. // Remarks:
  40. //     FocusControl type defines the constants used by CXTColorBase for
  41. //     determining which area of the color window control has focus.
  42. // See Also:
  43. //     CXTColorBase
  44. //
  45. // <KEYWORDS focusNone, focusColorWheel, focusLumination>
  46. // ----------------------------------------------------------------------
  47. enum FocusedControl
  48. {
  49. focusNone,       // Color window does not have input focus.
  50. focusColorWheel, // Color wheel window has focus.
  51. focusLumination  // Lumination window has focus.
  52. };
  53. public:
  54. //-----------------------------------------------------------------------
  55. // Summary:
  56. //     Constructs a CXTColorBase object
  57. //-----------------------------------------------------------------------
  58. CXTColorBase();
  59. //-----------------------------------------------------------------------
  60. // Summary:
  61. //     Destroys a CXTColorBase object, handles cleanup and deallocation
  62. //-----------------------------------------------------------------------
  63. virtual ~CXTColorBase();
  64. public:
  65. //-----------------------------------------------------------------------
  66. // Summary:
  67. //     Call this member function to update the cursor position.
  68. // Parameters:
  69. //     point   - Current cursor location relative to the device context.
  70. //-----------------------------------------------------------------------
  71. virtual void UpdateCursorPos(CPoint point);
  72. //-----------------------------------------------------------------------
  73. // Summary:
  74. //     This member function is called to convert an RGB color value to
  75. //     an HSL value.
  76. // Parameters:
  77. //     color - An RGB value that represents the value to convert to HSL.
  78. //     h     - Represents the color hue.
  79. //     s     - Represents the color saturation.
  80. //     l     - Represents the color illumination.
  81. //-----------------------------------------------------------------------
  82. static void RGBtoHSL(COLORREF color, double *h, double *s, double* l);
  83. //-----------------------------------------------------------------------
  84. // Summary:
  85. //     This member function is called to convert an HLS value to an RGB
  86. //     color value.
  87. // Parameters:
  88. //     h - Represents the color hue.
  89. //     l - Represents the color illumination.
  90. //     s - Represents the color saturation.
  91. // Returns:
  92. //     A COLORREF value.
  93. //-----------------------------------------------------------------------
  94. static COLORREF HLStoRGB(double h, double l, double s);
  95. protected:
  96. //-----------------------------------------------------------------------
  97. // Summary:
  98. //     This member function is called by the CXTColorBase class to
  99. //     perform initialization when the window is created or sub-classed.
  100. // Returns:
  101. //     TRUE if the window was successfully initialized, otherwise FALSE.
  102. //-----------------------------------------------------------------------
  103. virtual bool Init();
  104. //{{AFX_CODEJOCK_PRIVATE
  105. DECLARE_MESSAGE_MAP()
  106. //{{AFX_VIRTUAL(CXTColorBase)
  107. virtual void PreSubclassWindow();
  108. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  109. //}}AFX_VIRTUAL
  110. //{{AFX_MSG(CXTColorBase)
  111. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  112. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  113. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  114. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  115. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  116. //}}AFX_MSG
  117. //}}AFX_CODEJOCK_PRIVATE
  118. protected:
  119. static
  120. FocusedControl m_eHasFocus;        // Determines which property page has input focus.
  121. bool           m_bPreSubclassInit; // true when initializing from PreSubclassWindow.
  122. public:
  123. double m_nLum;       // Current illumination value.
  124. double m_nSat;       // Current saturation value.
  125. double m_nHue;       // Current hue value.
  126. CPoint m_ptMousePos; // Current mouse position relative to the device context.
  127. };
  128. //////////////////////////////////////////////////////////////////////
  129. //===========================================================================
  130. // Summary:
  131. //     CXTColorWnd is a CXTColorBase derived class. It is used to create a
  132. //     color selection window.
  133. //===========================================================================
  134. class _XTP_EXT_CLASS CXTColorWnd : public CXTColorBase
  135. {
  136. public:
  137. //-----------------------------------------------------------------------
  138. // Summary:
  139. //     Constructs a CXTColorWnd object
  140. //-----------------------------------------------------------------------
  141. CXTColorWnd();
  142. //-----------------------------------------------------------------------
  143. // Summary:
  144. //     Destroys a CXTColorWnd object, handles cleanup and deallocation
  145. //-----------------------------------------------------------------------
  146. virtual ~CXTColorWnd();
  147. public:
  148. //-----------------------------------------------------------------------
  149. // Summary:
  150. //     Call this member function to set the color for the selection window.
  151. // Parameters:
  152. //     nHue     - Current hue value that represents the color.
  153. //     nSat     - Current saturation value that represents the color.
  154. //-----------------------------------------------------------------------
  155. virtual void SetColor(double nHue, double nSat);
  156. //-----------------------------------------------------------------------
  157. // Summary:
  158. //     Call this member function to update the cursor position.
  159. // Parameters:
  160. //     point   - Current cursor location relative to the device context.
  161. //-----------------------------------------------------------------------
  162. virtual void UpdateCursorPos(CPoint point);
  163. //-----------------------------------------------------------------------
  164. // Summary:
  165. //     This member function is called to update the cross hair cursor.
  166. // Parameters:
  167. //     pDC - A CDC pointer that represents the current device context.
  168. //-----------------------------------------------------------------------
  169. void DrawCrossHair(CDC* pDC);
  170. //-----------------------------------------------------------------------
  171. // Summary:
  172. //     This member function is called to set the hue for the color
  173. //     window.
  174. // Parameters:
  175. //     h - Represents the new hue value to set.
  176. //-----------------------------------------------------------------------
  177. void SetHue(double h);
  178. //-----------------------------------------------------------------------
  179. // Summary:
  180. //     This member function is called to set the saturation for the
  181. //     color window.
  182. // Parameters:
  183. //     s - Represents the new saturation value to set.
  184. //-----------------------------------------------------------------------
  185. void SetSaturation(double s);
  186. protected:
  187. //{{AFX_CODEJOCK_PRIVATE
  188. DECLARE_MESSAGE_MAP()
  189. //{{AFX_VIRTUAL(CXTColorWnd)
  190. virtual BOOL PreTranslateMessage(MSG* pMsg);
  191. //}}AFX_VIRTUAL
  192. //{{AFX_MSG(CXTColorWnd)
  193. afx_msg void OnPaint();
  194. afx_msg void OnSetFocus(CWnd* pOldWnd);
  195. afx_msg void OnKillFocus(CWnd* pNewWnd);
  196. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  197. //}}AFX_MSG
  198. //}}AFX_CODEJOCK_PRIVATE
  199. protected:
  200. CBitmap        m_bmpPicker;         // Background device context.
  201. };
  202. //===========================================================================
  203. // Summary:
  204. //     CXTColorLum is a CXTColorBase derived class. It is used to create a
  205. //     color luminance selection bar.
  206. //===========================================================================
  207. class _XTP_EXT_CLASS CXTColorLum : public CXTColorBase
  208. {
  209. public:
  210. //-----------------------------------------------------------------------
  211. // Summary:
  212. //     Constructs a CXTColorLum object
  213. //-----------------------------------------------------------------------
  214. CXTColorLum();
  215. //-----------------------------------------------------------------------
  216. // Summary:
  217. //     Destroys a CXTColorLum object, handles cleanup and deallocation
  218. //-----------------------------------------------------------------------
  219. virtual ~CXTColorLum();
  220. public:
  221. //-----------------------------------------------------------------------
  222. // Summary:
  223. //     Call this member function to set the color for the selection window.
  224. // Parameters:
  225. //     nHue     - Current hue value that represents the color.
  226. //     nSat     - Current saturation value that represents the color.
  227. //-----------------------------------------------------------------------
  228. virtual void SetColor(double nHue, double nSat);
  229. //-----------------------------------------------------------------------
  230. // Summary:
  231. //     Call this member function to update the cursor position.
  232. // Parameters:
  233. //     point   - Current cursor location relative to the device context.
  234. //-----------------------------------------------------------------------
  235. virtual void UpdateCursorPos(CPoint point);
  236. //-----------------------------------------------------------------------
  237. // Summary:
  238. //     This member function is called to draw the indicator arrow.
  239. // Parameters:
  240. //     pDC - A CDC pointer that represents the current device context.
  241. //-----------------------------------------------------------------------
  242. void DrawSliderArrow(CDC* pDC);
  243. //-----------------------------------------------------------------------
  244. // Summary:
  245. //     This member function is called to draw the selection bar.
  246. // Parameters:
  247. //     pDC - A CDC pointer that represents the current device context.
  248. //-----------------------------------------------------------------------
  249. void DrawLuminanceBar(CDC* pDC);
  250. // ---------------------------------------------------------------------
  251. // Summary:
  252. //     This member function is called to set the luminance for the color
  253. //     window.
  254. // Parameters:
  255. //     l -  Represents the new luminance value to set.
  256. // ---------------------------------------------------------------------
  257. void SetLuminance(double l);
  258. // ----------------------------------------------------------------------
  259. // Summary:
  260. //     This member function is called to retrieve the display size of the
  261. //     luminance bar.
  262. // Parameters:
  263. //     rect -  Address to a CRect object.
  264. // ----------------------------------------------------------------------
  265. void GetLumBarRect(CRect& rect);
  266. protected:
  267. //{{AFX_CODEJOCK_PRIVATE
  268. DECLARE_MESSAGE_MAP()
  269. //{{AFX_VIRTUAL(CXTColorLum)
  270. virtual BOOL PreTranslateMessage(MSG* pMsg);
  271. //}}AFX_VIRTUAL
  272. //{{AFX_MSG(CXTColorLum)
  273. afx_msg void OnPaint();
  274. afx_msg void OnSetFocus(CWnd* pOldWnd);
  275. afx_msg void OnKillFocus(CWnd* pNewWnd);
  276. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  277. //}}AFX_MSG
  278. //}}AFX_CODEJOCK_PRIVATE
  279. protected:
  280. };
  281. //===========================================================================
  282. // Summary:
  283. //     CXTColorPageCustom is derived from CXTThemePropertyPage. It is used
  284. //     to create a CXTColorPageCustom dialog.
  285. //===========================================================================
  286. class _XTP_EXT_CLASS CXTColorPageCustom : public CPropertyPage
  287. {
  288. public:
  289. //-----------------------------------------------------------------------
  290. // Summary:
  291. //     Constructs a CXTColorPageCustom object
  292. // Parameters:
  293. //     pParentSheet - A pointer to the parent sheet.
  294. //-----------------------------------------------------------------------
  295. CXTColorPageCustom(CXTColorDialog* pParentSheet = NULL);
  296. //-----------------------------------------------------------------------
  297. // Summary:
  298. //     Destroys a CXTColorPageCustom object, handles cleanup and deallocation
  299. //-----------------------------------------------------------------------
  300. virtual ~CXTColorPageCustom();
  301. public:
  302. //-----------------------------------------------------------------------
  303. // Summary:
  304. //     This member function is called to retrieve the HSL values of the RGB
  305. //     specified by color.
  306. // Parameters:
  307. //     color - An RGB value that represents the color.
  308. //     xtFocusLumination   - Address of the integer to receive the illumination value (0-255).
  309. //     sat   - Address of the integer to receive the saturation value (0-255).
  310. //     hue   - Address of the integer to receive the hue value (0-255).
  311. //-----------------------------------------------------------------------
  312. void RGBtoHSL(COLORREF color, int* xtFocusLumination, int* sat, int* hue);
  313. protected:
  314. //{{AFX_CODEJOCK_PRIVATE
  315. DECLARE_MESSAGE_MAP()
  316. //{{AFX_VIRTUAL(CXTColorPageCustom)
  317. virtual BOOL OnSetActive();
  318. virtual void DoDataExchange(CDataExchange* pDX);
  319. virtual BOOL OnInitDialog();
  320. //}}AFX_VIRTUAL
  321. //{{AFX_MSG(CXTColorPageCustom)
  322. void UpdateRGB(COLORREF clr);
  323. afx_msg void OnChangeEdit();
  324. afx_msg void OnChangeEditLum();
  325. afx_msg void OnChangeEditHue();
  326. afx_msg void OnChangeEditSat();
  327. afx_msg LRESULT OnUpdateColor(WPARAM wParam, LPARAM lParam);
  328. //}}AFX_MSG
  329. //}}AFX_CODEJOCK_PRIVATE
  330. protected:
  331. //{{AFX_CODEJOCK_PRIVATE
  332. //{{AFX_DATA(CXTColorPageCustom)
  333. enum { IDD = XT_IDD_COLORCUSTOM };
  334. CXTColorWnd m_colorWnd;
  335. CXTColorLum m_colorLum;
  336. CStatic m_txtSat;
  337. CStatic m_txtRed;
  338. CStatic m_txtLum;
  339. CStatic m_txtHue;
  340. CStatic m_txtGreen;
  341. CStatic m_txtBlue;
  342. CSpinButtonCtrl m_spinSat;
  343. CSpinButtonCtrl m_spinRed;
  344. CSpinButtonCtrl m_spinLum;
  345. CSpinButtonCtrl m_spinHue;
  346. CSpinButtonCtrl m_spinGreen;
  347. CSpinButtonCtrl m_spinBlue;
  348. CEdit m_editHue;
  349. CEdit m_editGreen;
  350. CEdit m_editBlue;
  351. CEdit m_editLum;
  352. CEdit m_editRed;
  353. CEdit m_editSat;
  354. int     m_nR;
  355. int     m_nB;
  356. int     m_nG;
  357. int     m_nH;
  358. int     m_nL;
  359. int     m_nS;
  360. //}}AFX_DATA
  361. //}}AFX_CODEJOCK_PRIVATE
  362. protected:
  363. CXTColorDialog*     m_pParentSheet; // Points to the parent property sheet
  364. friend class CXTColorLum;
  365. };
  366. #endif // !defined(__XTCOLORCUSTOM_H__)