]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/region.cpp
Undefed Yield symbol if defined, else syntax error
[wxWidgets.git] / src / msw / region.cpp
index b5e7227e1ad3951a61ba4ce5658f639f280749a1..56846e68ddd58aad58cb330d1e4c7895a8e452dd 100644 (file)
@@ -1,7 +1,8 @@
 /////////////////////////////////////////////////////////////////////////////
-// File:      region.cpp
+// Name:        msw/region.cpp
 // Purpose:   Region handling for wxWindows/X11
 // Author:    Markus Holzem
+// Modified by:
 // Created:   Fri Oct 24 10:46:34 MET 1997
 // RCS-ID:       $Id$
 // Copyright: (c) 1997 Julian Smart and Markus Holzem
@@ -12,6 +13,7 @@
 #pragma implementation "region.h"
 #endif
 
+// For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
@@ -36,6 +38,7 @@ class WXDLLEXPORT wxRegionRefData : public wxGDIRefData {
 public:
        wxRegionRefData(void)
        {
+        m_region = 0;
        }
 
        wxRegionRefData(const wxRegionRefData& data)
@@ -77,6 +80,12 @@ wxRegion::wxRegion(void)
     M_REGION = ::CreateRectRgn(0, 0, 0, 0);
 }
 
+wxRegion::wxRegion(WXHRGN hRegion)
+{
+    m_refData = new wxRegionRefData;
+    M_REGION = (HRGN) hRegion;
+}
+
 wxRegion::wxRegion(long x, long y, long w, long h)
 {
     m_refData = new wxRegionRefData;
@@ -279,6 +288,14 @@ wxRegionContain wxRegion::Contains(const wxRect& rect) const
     return Contains(x, y, w, h);
 }
 
+// Get internal region handle
+WXHRGN wxRegion::GetHRGN() const
+{
+    if (!m_refData)
+        return (WXHRGN) 0;
+    return (WXHRGN) M_REGION;
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 //                                                                                                                                                      //
 //                                                        wxRegionIterator                                                              //
@@ -334,13 +351,13 @@ void wxRegionIterator::Reset(const wxRegion& region)
 
         m_rects = new wxRect[header->nCount];
 
-        RECT* rect = (RECT*) (rgnData + sizeof(RGNDATAHEADER)) ;
-        uint i;
+        RECT* rect = (RECT*) ((char*)rgnData + sizeof(RGNDATAHEADER)) ;
+        size_t i;
         for (i = 0; i < header->nCount; i++)
         {
             m_rects[i] = wxRect(rect->left, rect->top,
                                  rect->right - rect->left, rect->bottom - rect->top);
-            rect += sizeof(RECT);
+            rect ++; // Advances pointer by sizeof(RECT)
         }
 
         m_numRects = header->nCount;