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

对话框与窗口

开发平台:

Visual C++

  1. // XTAnimationMemDC.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(__XTANIMATIONMEMDC_H__)
  22. #define __XTANIMATIONMEMDC_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. // ---------------------------------------------------------------
  28. // Summary:
  29. //     Enumeration used to determine animation style.
  30. // Remarks:
  31. //     XTAnimationType type defines constants used by the
  32. //     CXTAnimationMemDC class to determine the animation
  33. //     effect for the current device context.
  34. // See Also:
  35. //     CXTAnimationMemDC, CXTAnimationMemDC::Animate, CXTAnimationMemDC::SetCustomAnimation
  36. //
  37. // <KEYWORDS xtWindowsDefault, xtRandom, xtUnfold, xtSlide, xtFade, xtNone>
  38. // -------------------------------------------------------------------------------
  39. enum XTAnimationType
  40. {
  41. xtWindowsDefault,  // Uses Windows default animation settings.
  42. xtRandom,          // Animates a window with a random animation type.
  43. xtUnfold,          // Animates a window to unfold top to bottom.
  44. xtSlide,           // Animates a window to slide in from left.
  45. xtFade,            // Animates a window with a fade-in effect.
  46. xtNone             // No animation.
  47. };
  48. // -------------------------------------------------------------------------------------
  49. // Summary:
  50. //     CXTAnimationMemDC is a CXTMemDC derived class. This class
  51. //     can be used to render animation effects for the current device
  52. //     context.
  53. // Remarks:
  54. //     By calling Animate the device context is drawn on the
  55. //     screen with a defined animation type. See XTAnimationType for
  56. //     a list of available animation styles.<p/>
  57. //     Animations are similar to the menu animation effect as seen in
  58. //     Microsoft(r) Windows(r) or Microsoft(r) Office products.
  59. // Example:
  60. //     See Animate for an example that demonstrates the use of CXTAnimationMemDC.
  61. // See Also:
  62. //     LPFNANIMATION, XTAnimationType, Animate, SetCustomAnimation
  63. // -------------------------------------------------------------------------------------
  64. class _XTP_EXT_CLASS CXTAnimationMemDC : public CXTMemDC
  65. {
  66. public:
  67. // -------------------------------------------------------------------
  68. // Summary:
  69. //     Function pointer used to define a custom animation effect.
  70. // Parameters:
  71. //     rc -              Area to display.
  72. //     pDestDC -         Destination device context.
  73. //     pSrcDC -          Source device context.
  74. //     nType -           Enumerated XTAnimationType to determine
  75. //                       animation effect.
  76. //     nSteps -          Number of steps to complete animation.
  77. //     nAnimationTime -  Amount of time in milliseconds between each step.
  78. // Example:
  79. //     See CXTAnimationMemDC::SetCustomAnimation for an example that
  80. //     demonstrates the use of LPFNANIMATION.
  81. // See Also:
  82. //     CXTAnimationMemDC::SetCustomAnimation, XTAnimationType
  83. // -------------------------------------------------------------------
  84. typedef void (AFX_CDECL* LPFNANIMATION)(CRect rc, CDC* pDestDC, CDC* pSrcDC, int nType, int nSteps, int nAnimationTime);
  85. public:
  86. // ---------------------------------------------------------------------
  87. // Summary:
  88. //     Constructs a CXTAnimationMemDC object
  89. // Parameters:
  90. //     pDC -       [in] A pointer to a CDC object.
  91. //     rect -      [in] An address of a CRect object.
  92. //     clrColor -  [in] An RGB value that represents the current system face
  93. //                 color of three dimensional display elements.
  94. // Remarks:
  95. //     Call this member function to construct a CXTAnimationMemDC object
  96. //     using the specified device context.
  97. // Example:
  98. //     See Animate for an example that demonstrates the use of
  99. //     CXTAnimationMemDC.
  100. // See Also:
  101. //     LPFNANIMATION, XTAnimationType, Animate, SetCustomAnimation
  102. // ---------------------------------------------------------------------
  103. CXTAnimationMemDC(CDC* pDC, const CRect& rect, COLORREF clrColor = GetSysColor(COLOR_3DFACE));
  104. // -------------------------------------------------------------------
  105. // Summary:
  106. //     Destroys a CXTAnimationMemDC object, handles cleanup and
  107. //     deallocation.
  108. // -------------------------------------------------------------------
  109. virtual ~CXTAnimationMemDC();
  110. // ----------------------------------------------------------------------------
  111. // Summary:
  112. //     This member function performs the animation
  113. // Parameters:
  114. //     nType -           [in] Type of animation to perform.
  115. //     nSteps -          [in] Number of steps to take during animation.
  116. //     nAnimationTime -  [in] Amount of time to rest, in milliseconds, between
  117. //                       each step.
  118. // Remarks:
  119. //     Call this member function from your WM_PAINT handler to render the
  120. //     animation background.
  121. // Example:
  122. //     The following example demonstrates the use of Animate.
  123. // <code>
  124. // void CMainFrame::DoAnimationTest(CDC* pDC, XTAnimationType anim)
  125. // {
  126. //     CRect r(100, 100, 300, 200);
  127. //     CXTMemDC background(pDC, r, (COLORREF)-1);
  128. //     background.FromDC();
  129. //     {
  130. //         CXTAnimationMemDC memDC(pDC, r, NULL);
  131. //
  132. //         r -= r.TopLeft();
  133. //
  134. //         memDC.Rectangle(r);
  135. //         memDC.MoveTo(0, 0);
  136. //         memDC.LineTo(r.BottomRight());
  137. //         memDC.SelectStockObject(GRAY_BRUSH);
  138. //         memDC.FloodFill(r.left + 10, r.top + 10, RGB(0, 0, 0));
  139. //         memDC.Animate(anim, 10, 1000);
  140. //     }
  141. //
  142. //     ::Sleep(2000);
  143. // }
  144. // </code>
  145. // See Also:
  146. //     LPFNANIMATION, XTAnimationType, SetCustomAnimation
  147. // ----------------------------------------------------------------------------
  148. void Animate(int nType = xtWindowsDefault, int nSteps = 10, int nAnimationTime = 1000);
  149. // ------------------------------------------------------------------------------
  150. // Summary:
  151. //     This member implements default animation effects <i>Fade</i>, <i>Slide</i>
  152. //     and <i>Unfold</i>.
  153. // Parameters:
  154. //     rc -              [in] Bounding rectangle.
  155. //     pDestDC -         [in] Pointer to device context you must draw to.
  156. //     pSrcDC -          [in] Device context that contains the bitmap you must
  157. //                       take.
  158. //     nType -           [in] Type of animation to perform. For custom animation
  159. //                       you must use numbers greater than <i>xtNone</i>.
  160. //     nSteps -          [in] Number of steps to take during animation.
  161. //     nAnimationTime -  [in] Amount of time to rest, in milliseconds, between
  162. //                       each step.
  163. // Remarks:
  164. //     You can add new animation effects to call SetCustomAnimation
  165. //     member.
  166. // Example:
  167. //     See SetCustomAnimation for an example that demonstrates the use of
  168. //     DefaultAnimation.
  169. // See Also:
  170. //     LPFNANIMATION, XTAnimationType, Animate, SetCustomAnimation
  171. // ------------------------------------------------------------------------------
  172. static void AFX_CDECL DefaultAnimation(CRect rc, CDC* pDestDC, CDC* pSrcDC, int nType, int nSteps, int nAnimationTime);
  173. // -----------------------------------------------------------------------
  174. // Summary:
  175. //     Call this member function to setup new Animation effects.
  176. // Parameters:
  177. //     pCustom -  [in] Function pointer that holds the address of a custom
  178. //                animation function.
  179. // Remarks:
  180. //     You can call DefaultAnimation in your custom animation method to
  181. //     handle default animation effects.
  182. // Example:
  183. //     The following example demonstrates the use of SetCustomAnimation.
  184. // <code>
  185. // int CMainFrame::OnCreate()
  186. // {
  187. //     // custom animation procedure.
  188. //     CXTAnimationMemDC::SetCustomAnimation(CustomAnimation);
  189. //     ...
  190. // }
  191. // ...
  192. // void CMainFrame::CustomAnimation(CRect rc, CDC* pDestDC,
  193. //     CDC* pSrcDC, int nType, int nSteps, int nAnimationTime)
  194. // {
  195. //     if (nType == xtUnfold)
  196. //     {
  197. //         // do custom animation
  198. //     }
  199. //     else
  200. //     {
  201. //         CXTAnimationMemDC::DefaultAnimation(rc, pDestDC,
  202. //             pSrcDC, nType, nSteps, nAnimationTime);
  203. //     }
  204. // }
  205. //     </code>
  206. // See Also:
  207. //     LPFNANIMATION, XTAnimationType, Animate, DefaultAnimation
  208. // -----------------------------------------------------------------------
  209. static void SetCustomAnimation(LPFNANIMATION pCustom);
  210. private:
  211. // -------------------------------------------------------------------
  212. // Summary:
  213. //     Private LPFNANIMATION pointer that points to the address of a
  214. //     user defined animation method.
  215. // -------------------------------------------------------------------
  216. static LPFNANIMATION m_pCustomAnimation;
  217. // ---------------------------------------------------------
  218. // Summary:
  219. //     Private method is used internally for alpha-blending.
  220. // ---------------------------------------------------------
  221. static void AlphaBlendU(PBYTE, PBYTE, int, int, PBYTE, BYTE);
  222. };
  223. #endif // !defined(__XTANIMATIONMEMDC_H__)