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

对话框与窗口

开发平台:

Visual C++

  1. // XTPPropertyGridItemColor.h interface for the CXTPPropertyGridItemColor 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(__XTPPROPERTYGRIDITEMCOLOR_H__)
  22. #define __XTPPROPERTYGRIDITEMCOLOR_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. //-----------------------------------------------------------------------
  28. // Summary:
  29. //     Editor type for CXTPPropertyGridItemColor item
  30. // See Also: CXTPPropertyGridItemColor, CXTPPropertyGridItemColor::SetEditorStyle
  31. // Example:
  32. //     <code>pItem->SetEditorStyle(xtpGridItemColorExtendedDialog);</code>
  33. //-----------------------------------------------------------------------
  34. enum XTPPropertyGridItemColorEditor
  35. {
  36. xtpGridItemColorPopup,            // Color popup editor
  37. xtpGridItemColorStandardDialog,   // Standard color dialog editor
  38. xtpGridItemColorExtendedDialog    // Extended color Editor editor
  39. };
  40. //===========================================================================
  41. // Summary:
  42. //     CXTPPropertyGridItemColor is a CXTPPropertyGridItem derived class.
  43. //     It is used to create an RGB value item in a Property Grid control.
  44. //===========================================================================
  45. class _XTP_EXT_CLASS CXTPPropertyGridItemColor : public CXTPPropertyGridItem
  46. {
  47. public:
  48. //-----------------------------------------------------------------------
  49. // Summary:
  50. //     Constructs a CXTPPropertyGridItemColor object.
  51. // Parameters:
  52. //     strCaption - Caption of the item.
  53. //     nID        - Identifier of the item.
  54. //     clr        - Initial color value for this item.
  55. //     pBindColor - If not NULL, then the value of this item
  56. //                  is bound the value of this variable.
  57. // Remarks:
  58. //     Class CXTPPropertyGridItemColor has no default constructor.
  59. //
  60. //          When using the second constructor, the Identifier (nID) of the
  61. //          second constructor can be linked with a STRINGTABLE resource
  62. //          with the same id in such form "Caption\nDescription".
  63. //
  64. //          BINDING:
  65. //            Variables can be bound to an item in two ways, the first is
  66. //            to pass in a variable at the time of creation, the second allows
  67. //            variables to be bound to an item after creation with the
  68. //            BindToColor member.
  69. //
  70. //            Bound variables store the values of the property grid items
  71. //            and can be accessed without using the property grid methods
  72. //            and properties.  Bound variables allow the property grid to
  73. //            store data in variables.  When the value of a PropertyGridItem
  74. //            is changed, the value of the bound variable will be changed to
  75. //            the PropertyGridItem value.  The advantage of binding is that
  76. //            the variable can be used and manipulated without using
  77. //            PropertyGridItem methods and properties.
  78. //
  79. //            NOTE:  If the value of the variable is changed without using
  80. //            the PropertyGrid, the PropertyGridItem value will not be
  81. //            updated until you call CXTPPropertyGrid::Refresh.
  82. // See Also: BindToColor
  83. //-----------------------------------------------------------------------
  84. CXTPPropertyGridItemColor(LPCTSTR strCaption, COLORREF clr = 0, COLORREF* pBindColor = NULL);
  85. CXTPPropertyGridItemColor(UINT nID, COLORREF clr = 0, COLORREF* pBindColor = NULL);  // <COMBINE CXTPPropertyGridItemColor::CXTPPropertyGridItemColor@LPCTSTR@COLORREF@COLORREF*>
  86. //-----------------------------------------------------------------------
  87. // Summary:
  88. //     Destroys a CXTPPropertyGridItemColor object
  89. //-----------------------------------------------------------------------
  90. virtual ~CXTPPropertyGridItemColor();
  91. public:
  92. //-----------------------------------------------------------------------
  93. // Summary:
  94. //     Call this method to change the item's value.
  95. // Parameters:
  96. //     clr - The new RGB value of the item.
  97. //-----------------------------------------------------------------------
  98. virtual void SetColor(COLORREF clr);
  99. //-----------------------------------------------------------------------
  100. // Summary:
  101. //     Call this method to get the RGB value of the item.
  102. // Returns:
  103. //     An RGB value.
  104. //-----------------------------------------------------------------------
  105. virtual COLORREF GetColor() const;
  106. //-----------------------------------------------------------------------
  107. // Summary:
  108. //     The StringToRGB function converts a string to a COLORREF.
  109. // Parameters:
  110. //     str - String that is converted to a COLORREF.
  111. //           Format of string is RRR;GGG;BBB
  112. // Returns:
  113. //     An COLORREF RGB value.
  114. //-----------------------------------------------------------------------
  115. static COLORREF AFX_CDECL StringToRGB(LPCTSTR str);
  116. //-----------------------------------------------------------------------
  117. // Summary:
  118. //     The RGBToString function converts a COLORREF to a string.
  119. // Parameters:
  120. //     clr - COLORREF that is converted to a string.
  121. // Returns:
  122. //     Returns a string in the format RRR;GGG;BBB
  123. //-----------------------------------------------------------------------
  124. static CString AFX_CDECL RGBToString(COLORREF clr);
  125. //-----------------------------------------------------------------------
  126. // Summary:
  127. //     Call this method to bind an item to a COLORREF object.
  128. // Parameters:
  129. //     pBindColor - COLORREF object to bind to item.
  130. // Remarks:
  131. //     Variables can be bound to an item in two ways, the first is
  132. //     to pass in a variable at the time of creation, the second allows
  133. //     variables to be bound to an item after creation with the
  134. //     BindToColor member.
  135. //
  136. //     Bound variables store the values of the property grid items
  137. //     and can be accessed without using the property grid methods
  138. //     and properties.  Bound variables allow the property grid to
  139. //     store data in variables.  When the value of a PropertyGridItem
  140. //     is changed, the value of the bound variable will be changed to
  141. //     the PropertyGridItem value.  The advantage of binding is that
  142. //     the variable can be used and manipulated without using
  143. //     PropertyGridItem methods and properties.
  144. //
  145. //     NOTE:  If the value of the variable is changed without using
  146. //     the PropertyGrid, the PropertyGridItem value will not be
  147. //     updated until you call CXTPPropertyGrid::Refresh.
  148. //-----------------------------------------------------------------------
  149. virtual void BindToColor(COLORREF* pBindColor);
  150. public:
  151. //-----------------------------------------------------------------------
  152. // Summary: Call this method to set editor type for color item
  153. // Parameters:
  154. //     editor - Editor type to set. It can be one of the following:
  155. //         * xtpGridItemColorPopup - Color popup editor
  156. //         * xtpGridItemColorStandardDialog - Standard color dialog editor
  157. //         * xtpGridItemColorExtendedDialog - Extended color Editor editor
  158. // See Also: GetEditorStyle, XTPPropertyGridItemColorEditor
  159. //-----------------------------------------------------------------------
  160. void SetEditorStyle(XTPPropertyGridItemColorEditor editor);
  161. //-----------------------------------------------------------------------
  162. // Summary:
  163. //     Determines editor type for color item
  164. // Returns:
  165. //     XTPPropertyGridItemColorEditor editor type
  166. // See Also: SetEditorStyle, XTPPropertyGridItemColorEditor
  167. //-----------------------------------------------------------------------
  168. XTPPropertyGridItemColorEditor GetEditorStyle();
  169. protected:
  170. //-----------------------------------------------------------------------
  171. // Summary:
  172. //     This method is called when an item is drawn. Override this function if
  173. //     needed.
  174. // Parameters:
  175. //     dc      - Reference to the device context to be used for rendering an image
  176. //               of the item.
  177. //     rcValue - Bounding rectangle of the item.
  178. // Returns:
  179. //     TRUE if the item is self-drawn.
  180. //-----------------------------------------------------------------------
  181. virtual BOOL OnDrawItemValue(CDC& dc, CRect rcValue);
  182. //-----------------------------------------------------------------------
  183. // Summary:
  184. //     Retrieves the bounding rectangle of the item value's text.
  185. //     Override this member function to change it.
  186. // Returns:
  187. //     A CRect object that represents the bounding rectangle of the
  188. //     item value's text.
  189. //-----------------------------------------------------------------------
  190. virtual CRect GetValueRect();
  191. //-----------------------------------------------------------------------
  192. // Summary:
  193. //     Call this method to change an item's value.
  194. //     Override this method to add new functionality.
  195. //     You should call the base class version of this function from your
  196. //     override.
  197. // Parameters:
  198. //     strValue - New value of the item.
  199. //-----------------------------------------------------------------------
  200. virtual void SetValue(CString strValue);
  201. //-----------------------------------------------------------------------
  202. // Summary:
  203. //     This method is called when the user presses the in-place button.
  204. //     Override the method to show an item-specific dialog.
  205. // Parameters:
  206. //     pButton - Button that was pressed
  207. // Remarks:
  208. //     The in-place button is the button that the user presses to
  209. //     display the color picker dialog.
  210. //-----------------------------------------------------------------------
  211. virtual void OnInplaceButtonDown(CXTPPropertyGridInplaceButton* pButton);
  212. //-------------------------------------------------------------------------
  213. // Summary:
  214. //     This member is called before the item becomes visible in the
  215. //     property grid.
  216. // Remarks:
  217. //     Before the item is inserted, it is first check to see if it
  218. //     is bound to a variable, if it is, then the value of the item
  219. //     is updated with the value stored in the bound variable.
  220. //
  221. //          OnBeforeInsert is called when an item is inserted,
  222. //          when a category is inserted, when a category or item is
  223. //          expanded, and when the sort property has changed.
  224. //-------------------------------------------------------------------------
  225. virtual void OnBeforeInsert();
  226. protected:
  227. COLORREF m_clrValue;        // Color value of the item.
  228. COLORREF* m_pBindColor;     // Pointer to variable bound to this item, this is the color of the bound item.
  229. XTPPropertyGridItemColorEditor m_colorEditor;           // Editor type of color item
  230. private:
  231. DECLARE_DYNAMIC(CXTPPropertyGridItemColor)
  232. };
  233. //////////////////////////////////////////////////////////////////////
  234. AFX_INLINE COLORREF CXTPPropertyGridItemColor::GetColor() const {
  235. return m_clrValue;
  236. }
  237. #endif //#if !defined(__XTPPROPERTYGRIDITEMCOLOR_H__)