home *** CD-ROM | disk | FTP | other *** search
/ Windows Graphics Programming / Feng_Yuan_Win32_GDI_DirectX.iso / Samples / include / region.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-12  |  2.1 KB  |  79 lines

  1. #pragma
  2.  
  3. //-----------------------------------------------------------------------------------//
  4. //              Windows Graphics Programming: Win32 GDI and DirectDraw               //
  5. //                             ISBN  0-13-086985-6                                   //
  6. //                                                                                   //
  7. //  Written            by  Yuan, Feng                             www.fengyuan.com   //
  8. //  Copyright (c) 2000 by  Hewlett-Packard Company                www.hp.com         //
  9. //  Published          by  Prentice Hall PTR, Prentice-Hall, Inc. www.phptr.com      //
  10. //                                                                                   //
  11. //  FileName   : region.h                                                             //
  12. //  Description: GDI region wrapper                                                  //
  13. //  Version    : 1.00.000, May 31, 2000                                              //
  14. //-----------------------------------------------------------------------------------//
  15.  
  16. class KRegion
  17. {
  18. public:
  19.     int       m_nRegionSize;
  20.     int       m_nRectCount;
  21.     RECT *    m_pRect;
  22.     RGNDATA * m_pRegion;
  23.  
  24.     KRegion()
  25.     {
  26.         m_nRegionSize = 0;
  27.         m_nRectCount  = 0;
  28.         m_pRegion     = NULL;
  29.         m_pRect       = NULL;
  30.     }
  31.  
  32.     void Reset(void)
  33.     {
  34.         if ( m_pRegion )
  35.             delete [] (char *) m_pRegion;
  36.  
  37.         m_pRegion     = NULL;
  38.         m_nRegionSize = 0;
  39.         m_nRectCount  = 0;
  40.         m_pRect       = NULL;
  41.     }
  42.  
  43.     ~KRegion()
  44.     {
  45.         Reset();
  46.     }
  47.  
  48.     BOOL GetRegionData(HRGN hRgn);
  49.     HRGN CreateRegion(XFORM * pXForm);
  50. };
  51.  
  52.  
  53. BOOL KRegion::GetRegionData(HRGN hRgn)
  54. {
  55.     Reset();
  56.  
  57.     m_nRegionSize = ::GetRegionData(hRgn, 0, NULL);
  58.     if ( m_nRegionSize==0 )
  59.         return FALSE;
  60.  
  61.     m_pRegion = (RGNDATA *) new char[m_nRegionSize];
  62.     if ( m_pRegion==NULL )
  63.         return FALSE;
  64.  
  65.     ::GetRegionData(hRgn, m_nRegionSize, m_pRegion);
  66.  
  67.     m_nRectCount = m_pRegion->rdh.nCount;
  68.     m_pRect      = (RECT *) & m_pRegion->Buffer;
  69.  
  70.     return TRUE;
  71. }
  72.  
  73.  
  74. HRGN KRegion::CreateRegion(XFORM * pXForm)
  75. {
  76.     return ExtCreateRegion(pXForm, m_nRegionSize, m_pRegion);
  77. }
  78.  
  79.