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

对话框与窗口

开发平台:

Visual C++

  1. // XTColorPicker.h : interface for the CXTColorPicker 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(__XTCOLORPICKER_H__)
  22. #define __XTCOLORPICKER_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. // class forwards
  28. class CXTColorPopup;
  29. struct XTP_PICK_BUTTON;
  30. //===========================================================================
  31. // Summary:
  32. //     CXTColorPicker is a CXTButton derived class. It displays a color picker
  33. //     popup window (CXTColorPopup) for Office(tm) style color selection.
  34. //===========================================================================
  35. class _XTP_EXT_CLASS CXTColorPicker : public CXTButton
  36. {
  37. DECLARE_DYNAMIC(CXTColorPicker)
  38. public:
  39. //-----------------------------------------------------------------------
  40. // Summary:
  41. //     Constructs a CXTColorPicker object
  42. //-----------------------------------------------------------------------
  43. CXTColorPicker();
  44. //-----------------------------------------------------------------------
  45. // Summary:
  46. //     Destroys a CXTColorPicker object, handles cleanup and deallocation
  47. //-----------------------------------------------------------------------
  48. virtual ~CXTColorPicker();
  49. public:
  50. //-----------------------------------------------------------------------
  51. // Summary:
  52. //     This member function will set the color value for the color
  53. //     picker.
  54. // Parameters:
  55. //     clr - An RGB value that represents the new RGB color for the
  56. //           control.
  57. //-----------------------------------------------------------------------
  58. virtual void SetColor(COLORREF clr);
  59. //-----------------------------------------------------------------------
  60. // Summary:
  61. //     This member function will return the currently selected color.
  62. // Returns:
  63. //     An RGB color value that represents the currently selected color.
  64. //-----------------------------------------------------------------------
  65. virtual COLORREF GetColor() const;
  66. // -------------------------------------------------------------------
  67. // Summary:
  68. //     This member function will display any text associated with the
  69. //     color picker button control. If the button has text, it will be
  70. //     displayed.
  71. // Parameters:
  72. //     bShowText -  TRUE to display button text.
  73. // -------------------------------------------------------------------
  74. virtual void ShowText(BOOL bShowText);
  75. // --------------------------------------------------------------------
  76. // Summary:
  77. //     This member function will determine if text is displayed for the
  78. //     color picker button control.
  79. // Returns:
  80. //     TRUE if the color picker displays text, otherwise returns FALSE.
  81. // --------------------------------------------------------------------
  82. virtual BOOL IsTextShown() const;
  83. // ------------------------------------------------------------------
  84. // Summary:
  85. //     This member function will display any text associated with the
  86. //     color picker button control in color.
  87. // Parameters:
  88. //     bColorText -  TRUE to display the button text in color.
  89. // ------------------------------------------------------------------
  90. virtual void ShowTextInColor(BOOL bColorText);
  91. // -----------------------------------------------------------------
  92. // Summary:
  93. //     This member function will determine if the text for the color
  94. //     picker button control is displayed in color.
  95. // Returns:
  96. //     TRUE if the button text is in color, otherwise returns FALSE.
  97. // -----------------------------------------------------------------
  98. virtual BOOL IsTextInColor() const;
  99. //-----------------------------------------------------------------------
  100. // Summary:
  101. //     This member function will set the default RGB color value for
  102. //     the color picker.
  103. // Parameters:
  104. //     clrDefault - An RGB value that represents the default color
  105. //     for the color picker.
  106. //-----------------------------------------------------------------------
  107. virtual void SetDefaultColor(COLORREF clrDefault);
  108. //-----------------------------------------------------------------------
  109. // Summary:
  110. //     This member function will return the default RGB color value for
  111. //     the color picker.
  112. // Returns:
  113. //     An RGB value that represents the default color value for the
  114. //     color picker.
  115. //-----------------------------------------------------------------------
  116. virtual COLORREF GetDefaultColor() const;
  117. // ------------------------------------------------------------------------------
  118. // Summary:
  119. //     Call this member function to modify the color picker display
  120. //     style.
  121. // Parameters:
  122. //     dwRemove -  Specifies the window styles to be removed during style
  123. //                 modification.
  124. //     dwAdd -     Specifies the window styles to be added during style modification.
  125. // Remarks:
  126. //     Styles to be added or removed can be combined by using the bitwise
  127. //     OR (|) operator. It can be one or more of the following:
  128. //     * <b>CPS_XT_NOFILL</b> The color picker will display a No Fill
  129. //           button rather than the default Automatic Color button.
  130. //     * <b>CPS_XT_EXTENDED</b> The color picker will display 40
  131. //           extended colors rather than the default 16 colors.
  132. //     * <b>CPS_XT_MORECOLORS</b> The color picker will display a
  133. //           More Colors button which will display a CXTColorDialog.
  134. //     * <b>CPS_XT_SHOW3DSELECTION</b> Displays the color selection
  135. //           box with a 3D raised border in CXTColorDialog.
  136. //     * <b>CPS_XT_SHOWHEXVALUE</b> Displays the hex equivalent of
  137. //           the selected color.
  138. // See Also:
  139. //     CXTColorPopup::Create, CXTColorSelectorCtrl::Create
  140. // ------------------------------------------------------------------------------
  141. virtual void ModifyCPStyle(DWORD dwRemove, DWORD dwAdd);
  142. // -------------------------------------------------------------------
  143. // Summary:
  144. //     This member function will activate the color picker and display
  145. //     the color popup window.
  146. // -------------------------------------------------------------------
  147. virtual void ShowPopupWindow();
  148. //-----------------------------------------------------------------------
  149. // Summary:
  150. //     Call this method to set custom colors for color picker
  151. // Parameters:
  152. //     pColors - Static array of colors and tooltips
  153. //     nCount  - Number of colors
  154. //     nCols   - Number of columns to show
  155. //-----------------------------------------------------------------------
  156. void SetColors(XTP_PICK_BUTTON* pColors, int nCount, int nCols = 8);
  157. protected:
  158. //-----------------------------------------------------------------------
  159. // Summary:
  160. //     This member function is called by the CXTColorPicker class to
  161. //     perform initialization when the window is created or sub-classed.
  162. // Returns:
  163. //     TRUE if the window was successfully initialized, otherwise FALSE.
  164. //-----------------------------------------------------------------------
  165. virtual bool Init();
  166. // ------------------------------------------------------------------------
  167. // Summary:
  168. //     Retrieves the background contrast color for the CXTColorPicker.
  169. // Returns:
  170. //     An RGB value either BLACK or WHITE.
  171. // Remarks:
  172. //     This member function is called to return the contrast color for the
  173. //     color picker button. The contrast color is used when text is
  174. //     displayed to contrast with the currently selected color. For
  175. //     example, if the currently selected color is WHITE, then BLACK would
  176. //     be returned so the text is legible.
  177. // ------------------------------------------------------------------------
  178. virtual COLORREF GetContrastColor() const;
  179. protected:
  180. //{{AFX_CODEJOCK_PRIVATE
  181. DECLARE_MESSAGE_MAP()
  182. //{{AFX_VIRTUAL(CXTColorPicker)
  183. virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
  184. //}}AFX_VIRTUAL
  185. //{{AFX_MSG(CXTColorPicker)
  186. afx_msg LRESULT OnSelChange(WPARAM wParam, LPARAM lParam);
  187. afx_msg LRESULT OnDropDown(WPARAM wParam, LPARAM lParam);
  188. afx_msg LRESULT OnCloseUp(WPARAM wParam, LPARAM lParam);
  189. afx_msg LRESULT OnSelEndOK(WPARAM wParam, LPARAM lParam);
  190. afx_msg LRESULT OnSelEndCancel(WPARAM wParam, LPARAM lParam);
  191. afx_msg LRESULT OnSelNoFill(WPARAM wParam, LPARAM lParam);
  192. afx_msg void OnShowPopup();
  193. //}}AFX_MSG
  194. //}}AFX_CODEJOCK_PRIVATE
  195. protected:
  196. BOOL     m_bShowText;    // TRUE if the color picker displays text.
  197. BOOL     m_bColorText;   // TRUE if the color picker text is colorized; only valid if m_bShowText is TRUE.
  198. BOOL     m_bPopupActive; // TRUE if the popup window is currently active.
  199. DWORD    m_dwPopup;      // Represents the style for the color picker.
  200. COLORREF m_clrSelected;  // An RGB value that represents the color for the display color.
  201. COLORREF m_clrDefault;   // An RGB value that represents the color for the default color.
  202. XTP_PICK_BUTTON*  m_pExtendedColors;         // Custom colors
  203. int               m_nExtendedColors;         // Custom colors count
  204. int               m_nCols;           // Number of columns in the color popup window.
  205. friend class CXTColorPickerTheme;
  206. };
  207. //////////////////////////////////////////////////////////////////////
  208. AFX_INLINE void CXTColorPicker::SetColors(XTP_PICK_BUTTON* pColors, int nCount, int nCols) {
  209. m_pExtendedColors = pColors;
  210. m_nExtendedColors = nCount;
  211. m_nCols = nCols;
  212. }
  213. AFX_INLINE COLORREF CXTColorPicker::GetColor() const {
  214. return m_clrSelected;
  215. }
  216. AFX_INLINE void CXTColorPicker::ShowText(BOOL bShowText) {
  217. m_bShowText = bShowText; RedrawWindow();
  218. }
  219. AFX_INLINE BOOL CXTColorPicker::IsTextShown() const {
  220. return m_bShowText;
  221. }
  222. AFX_INLINE void CXTColorPicker::ShowTextInColor(BOOL bColorText) {
  223. m_bColorText = bColorText; RedrawWindow();
  224. }
  225. AFX_INLINE BOOL CXTColorPicker::IsTextInColor() const {
  226. return m_bColorText;
  227. }
  228. AFX_INLINE void CXTColorPicker::SetDefaultColor(COLORREF clrDefault) {
  229. m_clrDefault = clrDefault; RedrawWindow();
  230. }
  231. AFX_INLINE COLORREF CXTColorPicker::GetDefaultColor() const {
  232. return m_clrDefault;
  233. }
  234. AFX_INLINE void CXTColorPicker::ModifyCPStyle(DWORD dwRemove, DWORD dwAdd) {
  235. m_dwPopup &= ~dwRemove; m_dwPopup |= dwAdd; RedrawWindow();
  236. }
  237. // ------------------------------------------------------------------------
  238. // Summary:
  239. //     The DDX_XTColorPicker function manages the transfer of
  240. //     integer data between a color picker control in a dialog box, form
  241. //     view, or control view object and a COLORREF data member of the
  242. //     dialog box, form view, or control view object.
  243. //
  244. //     When DDX_XTColorPicker is called, <i>'value'</i> is set to
  245. //     the current state of the color picker control.
  246. // Parameters:
  247. //     pDX -    A pointer to a CDataExchange object. The framework supplies
  248. //              this object to establish the context of the data exchange,
  249. //              including its direction.
  250. //     nIDC -   The resource ID of the color picker control associated with
  251. //              the control property.
  252. //     value -  A reference to a member variable of the dialog box, form view,
  253. //              or control view object with which data is exchanged.
  254. // See Also:
  255. //     CXTColorPicker
  256. // ------------------------------------------------------------------------
  257. _XTP_EXT_CLASS void AFXAPI DDX_XTColorPicker(CDataExchange* pDX, int nIDC, COLORREF& value);
  258. #endif // #if !defined(__XTCOLORPICKER_H__)