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

对话框与窗口

开发平台:

Visual C++

  1. // XTResizeRect.h: interface for the CXTResizeRect 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(__XTRESIZERECT_H__)
  22. #define __XTRESIZERECT_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. // ----------------------------------------------------------------------
  28. // Summary:
  29. //     The XT_RESIZE data type is defined as a <i>float</i> and is
  30. //     used for storing single-precision floating point x and y window
  31. //     coordinates.
  32. // See Also:
  33. //     CXTResizeRect, XT_RESIZERECT, CXTResizePoint, XT_RESIZEPOINT
  34. // ----------------------------------------------------------------------
  35. typedef float XT_RESIZE;
  36. // ---------------------------------------------------------------------
  37. // Summary:
  38. //     XT_RESIZERECT structure is used by the CXTResizeRect class
  39. //     for defining single -precision floating point coordinates of the
  40. //     upper-left and lower-right corners of a rectangle.
  41. // Example:
  42. //     The following example demonstrates alternate ways to initialize a XT_RESIZERECT structure:
  43. // <code>
  44. // XT_RESIZERECT rc1;
  45. // rc1.left = 20;
  46. // rc1.top = 30;
  47. // rc1.right = 180;
  48. // rc1.bottom = 230;
  49. //
  50. // XT_RESIZERECT rc2 = {20, 30, 180, 230};
  51. // </code>
  52. // See Also:
  53. //     CXTResizeRect, XT_RESIZE
  54. // ---------------------------------------------------------------------
  55. struct XT_RESIZERECT
  56. {
  57. XT_RESIZE left;     // Specifies the x-coordinate of the upper-left corner of a rectangle.
  58. XT_RESIZE top;      // Specifies the y-coordinate of the upper-left corner of a rectangle.
  59. XT_RESIZE right;    // Specifies the x-coordinate of the lower-right corner of a rectangle.
  60. XT_RESIZE bottom;   // Specifies the y-coordinate of the lower-right corner of a rectangle.
  61. };
  62. //===========================================================================
  63. // Summary:
  64. //     CXTResizeRect is an XT_RESIZERECT structure derived class. The
  65. //     CXTResizeRect class is similar to an XT_RESIZERECT structure. CXTResizeRect
  66. //     also includes member functions to manipulate CXTResizeRect objects and
  67. //     XT_RESIZERECT structures.
  68. // See Also:
  69. //     XT_RESIZERECT, CXTResizePoint, XT_RESIZEPOINT, XT_RESIZE
  70. //===========================================================================
  71. class _XTP_EXT_CLASS CXTResizeRect: public XT_RESIZERECT
  72. {
  73. public:
  74. //-----------------------------------------------------------------------
  75. // Summary:
  76. //     Constructs a CXTResizeRect object
  77. // Parameters:
  78. //     rc - Refers to the RECT structure with the coordinates for CXTResizeRect.
  79. //     rrc - Refers to the XT_RESIZERECT structure with the coordinates for
  80. //           CXTResizeRect.
  81. //     l - Specifies the left position of CXTResizeRect.
  82. //     t - Specifies the top of CXTResizeRect.
  83. //     r - Specifies the right position of CXTResizeRect.
  84. //     b - Specifies the bottom of CXTResizeRect.
  85. //-----------------------------------------------------------------------
  86. CXTResizeRect();
  87. CXTResizeRect(const RECT& rc); // <combine CXTResizeRect::CXTResizeRect>
  88. CXTResizeRect(const XT_RESIZERECT& rrc); // <combine CXTResizeRect::CXTResizeRect>
  89. CXTResizeRect(XT_RESIZE l, XT_RESIZE t, XT_RESIZE r, XT_RESIZE b); // <combine CXTResizeRect::CXTResizeRect>
  90. //-----------------------------------------------------------------------
  91. // Summary:
  92. //     This operator copies the dimensions of a rectangle to CXTResizeRect.
  93. // Parameters:
  94. //     rc - Refers to a source rectangle. It can be a RECT or CRect.
  95. // Returns:
  96. //     A reference to a CXTResizeRect object.
  97. //-----------------------------------------------------------------------
  98. CXTResizeRect& operator=(const RECT& rc);
  99. //-----------------------------------------------------------------------
  100. // Summary:
  101. //     This operator copies the dimensions of a rectangle to CXTResizeRect.
  102. // Parameters:
  103. //     rrc - Refers to a source rectangle. It can be a XT_RESIZERECT or CXTResizeRect.
  104. // Returns:
  105. //     A reference to a CXTResizeRect object.
  106. //-----------------------------------------------------------------------
  107. CXTResizeRect& operator=(const XT_RESIZERECT& rrc);
  108. //-----------------------------------------------------------------------
  109. // Summary:
  110. //     This operator adds the specified offsets to CXTResizeRect or inflates
  111. //     CXTResizeRect.
  112. // Parameters:
  113. //     rrc - Points to an XT_RESIZERECT structure or a CXTResizeRect object that
  114. //           contains the number of units to inflate each side of CXTResizeRect.
  115. // Returns:
  116. //     A reference to a CXTResizeRect object.
  117. //-----------------------------------------------------------------------
  118. CXTResizeRect& operator+=(const XT_RESIZERECT& rrc);
  119. //-----------------------------------------------------------------------
  120. // Summary:
  121. //     This operator adds the given offsets to CRect or inflates CRect.
  122. // Parameters:
  123. //     rrc - Points to an XT_RESIZERECT structure or a CXTResizeRect object that
  124. //           contains the number of units to inflate each side of the return value.
  125. // Returns:
  126. //     The resulting CXTResizeRect object.
  127. //-----------------------------------------------------------------------
  128. CXTResizeRect operator+(const XT_RESIZERECT& rrc);
  129. //-----------------------------------------------------------------------
  130. // Summary:
  131. //     This operator creates the intersection of CXTResizeRect and a rectangle,
  132. //     and returns the resulting CXTResizeRect.
  133. // Parameters:
  134. //     rrc - Contains an XT_RESIZERECT or a CXTResizeRect.
  135. // Returns:
  136. //     A CXTResizeRect that is the intersection of CXTResizeRect and 'rrc'. The
  137. //     intersection is the largest rectangle that is contained in both rectangles.
  138. //-----------------------------------------------------------------------
  139. CXTResizeRect operator & (const XT_RESIZERECT& rrc);
  140. //-----------------------------------------------------------------------
  141. // Summary:
  142. //     This operator determines whether CXTResizeRect is equal to a rectangle.
  143. // Parameters:
  144. //     rrc - Refers to a source rectangle. It can be an XT_RESIZERECT or a CXTResizeRect.
  145. // Returns:
  146. //     true if equal, otherwise returns false.
  147. //-----------------------------------------------------------------------
  148. bool operator==(const XT_RESIZERECT& rrc);
  149. //-----------------------------------------------------------------------
  150. // Summary:
  151. //     This operator determines whether CXTResizeRect is not equal to a rectangle.
  152. // Parameters:
  153. //     rrc - Refers to a source rectangle. It can be an XT_RESIZERECT or a CXTResizeRect.
  154. // Returns:
  155. //     false if equal, otherwise returns true.
  156. //-----------------------------------------------------------------------
  157. bool operator!= (const XT_RESIZERECT& rrc);
  158. //-----------------------------------------------------------------------
  159. // Summary:
  160. //     This operator converts a CXTResizeRect to a CRect. When you use this
  161. //     function, you do not need the address-of (&) operator. This operator
  162. //     will be automatically used when you pass a CXTResizeRect object to
  163. //     a function that expects a CRect.
  164. //-----------------------------------------------------------------------
  165. operator CRect();
  166. //-----------------------------------------------------------------------
  167. // Summary:
  168. //     This member function determines if CXTResizeRect is normalized.
  169. // Returns:
  170. //     true if normalized, otherwise returns false.
  171. //-----------------------------------------------------------------------
  172. bool IsNormalized();
  173. //-----------------------------------------------------------------------
  174. // Summary:
  175. //     This member function calculates the width of a CXTResizeRect by subtracting
  176. //     the left value from the right value. The resulting value can be negative.
  177. // Returns:
  178. //     The width of a CXTResizeRect.
  179. //-----------------------------------------------------------------------
  180. XT_RESIZE Width();
  181. //-----------------------------------------------------------------------
  182. // Summary:
  183. //     This member function calculates the height of a CXTResizeRect by subtracting
  184. //     the top value from the bottom value. The resulting value can be negative.
  185. // Returns:
  186. //     The height of a CXTResizeRect.
  187. //-----------------------------------------------------------------------
  188. XT_RESIZE Height();
  189. };
  190. //////////////////////////////////////////////////////////////////////
  191. AFX_INLINE CXTResizeRect::CXTResizeRect(const RECT& rc) {
  192. (operator=)(rc);
  193. }
  194. AFX_INLINE CXTResizeRect::CXTResizeRect(const XT_RESIZERECT& rrc) {
  195. (operator=)(rrc);
  196. }
  197. AFX_INLINE CXTResizeRect CXTResizeRect::operator+(const XT_RESIZERECT& rrc) {
  198. return CXTResizeRect(left + rrc.left, top + rrc.top, right + rrc.right, bottom + rrc.bottom);
  199. }
  200. AFX_INLINE bool CXTResizeRect::IsNormalized() {
  201. return ((left <= right) && (top <= bottom));
  202. }
  203. AFX_INLINE bool CXTResizeRect::operator==(const XT_RESIZERECT& rrc) {
  204. return left == rrc.left && top == rrc.top && right == rrc.right && bottom == rrc.bottom;
  205. }
  206. AFX_INLINE bool CXTResizeRect::operator!= (const XT_RESIZERECT& rrc) {
  207. return !operator==(rrc);
  208. }
  209. AFX_INLINE CXTResizeRect::operator CRect() {
  210. return CRect((int)left, (int)top, (int)right, (int)bottom);
  211. }
  212. AFX_INLINE XT_RESIZE CXTResizeRect::Width() {
  213. return right - left;
  214. }
  215. AFX_INLINE XT_RESIZE CXTResizeRect::Height() {
  216. return bottom - top;
  217. }
  218. //-----------------------------------------------------------------------
  219. // Summary:
  220. //     CXTResizeRect constants used by the CXTResize class for defining the
  221. //     resize attributes for a child in a resizable window.
  222. // Parameters:
  223. //     SZ_RESIZE - Resize.
  224. //     SZ_REPOS - Reposition.
  225. //     SZ_HORRESIZE - Horizontal resize.
  226. //     SZ_HORREPOS - Horizontal reposition.
  227. //     SZ_VERRESIZE - Vertical resize.
  228. //     SZ_VERREPOS - Vertical reposition.
  229. // Example:
  230. //     The following example demonstrates how to use CXTResizeRect.
  231. // <code>
  232. // // Set control resizing.
  233. // SetResize(ID_WIZBACK, SZ_REPOS(1));
  234. // SetResize(ID_WIZNEXT, SZ_REPOS(1));
  235. // SetResize(ID_WIZFINISH, SZ_REPOS(1));
  236. // SetResize(ID_WIZLINE, SZ_BOTTOM_LEFT, SZ_BOTTOM_RIGHT);
  237. // </code>
  238. // See Also:
  239. //     CXTResize, CXTResizeDialog, CXTResizeFormView, CXTResizeGroupBox, CXTResizePropertyPage, CXTResizePropertySheet,  CXTResizePoint, CXTResizeRect
  240. //-----------------------------------------------------------------------
  241. #define SZ_RESIZE(x) CXTResizeRect(0, 0, x, x)
  242. // <COMBINE SZ_RESIZE>
  243. #define SZ_REPOS(x) CXTResizeRect(x, x, x, x)
  244. // <COMBINE SZ_RESIZE>
  245. #define SZ_HORRESIZE(x) CXTResizeRect(0, 0, x, 0)
  246. // <COMBINE SZ_RESIZE>
  247. #define SZ_HORREPOS(x) CXTResizeRect(x, 0, x, 0)
  248. // <COMBINE SZ_RESIZE>
  249. #define SZ_VERRESIZE(x) CXTResizeRect(0, 0, 0, x)
  250. // <COMBINE SZ_RESIZE>
  251. #define SZ_VERREPOS(x) CXTResizeRect(0, x, 0, x)
  252. #endif // !defined(__XTRESIZERECT_H__)