]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/dib.h
Fix some compilation and linking errors in samples.
[wxWidgets.git] / include / wx / msw / dib.h
index f4f0bf0a86dc11b4af1c614fad8b71a022cb33ee..7f0d2ecb07a7de170be5e0bdea11482b950182f7 100644 (file)
@@ -17,6 +17,8 @@ class WXDLLEXPORT wxPalette;
 
 #include "wx/msw/private.h"
 
 
 #include "wx/msw/private.h"
 
+#if wxUSE_WXDIB
+
 // ----------------------------------------------------------------------------
 // wxDIB: represents a DIB section
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // wxDIB: represents a DIB section
 // ----------------------------------------------------------------------------
@@ -151,30 +153,10 @@ public:
 
 private:
     // common part of all ctors
 
 private:
     // common part of all ctors
-    void Init()
-    {
-        m_handle = 0;
-
-        m_data = NULL;
-
-        m_width =
-        m_height =
-        m_depth = 0;
-    }
+    void Init();
 
     // free resources
 
     // free resources
-    void Free()
-    {
-        if ( m_handle )
-        {
-            if ( !::DeleteObject(m_handle) )
-            {
-                wxLogLastError(wxT("DeleteObject(hDIB)"));
-            }
-
-            Init();
-        }
-    }
+    void Free();
 
     // the DIB section handle, 0 if invalid
     HBITMAP m_handle;
 
     // the DIB section handle, 0 if invalid
     HBITMAP m_handle;
@@ -198,6 +180,11 @@ private:
         m_height,
         m_depth;
 
         m_height,
         m_depth;
 
+    // in some cases we could be using a handle which we didn't create and in
+    // this case we shouldn't free it neither -- this flag tell us if this is
+    // the case
+    bool m_ownsHandle;
+
 
     // DIBs can't be copied
     wxDIB(const wxDIB&);
 
     // DIBs can't be copied
     wxDIB(const wxDIB&);
@@ -208,10 +195,40 @@ private:
 // inline functions implementation
 // ----------------------------------------------------------------------------
 
 // inline functions implementation
 // ----------------------------------------------------------------------------
 
+inline
+void wxDIB::Init()
+{
+    m_handle = 0;
+    m_ownsHandle = true;
+
+    m_data = NULL;
+
+    m_width =
+    m_height =
+    m_depth = 0;
+}
+
+inline
+void wxDIB::Free()
+{
+    if ( m_handle && m_ownsHandle )
+    {
+        if ( !::DeleteObject(m_handle) )
+        {
+            wxLogLastError(wxT("DeleteObject(hDIB)"));
+        }
+
+        Init();
+    }
+}
+
 inline wxDIB::~wxDIB()
 {
     Free();
 }
 
 inline wxDIB::~wxDIB()
 {
     Free();
 }
 
+#endif
+    // wxUSE_WXDIB
+
 #endif // _WX_MSW_DIB_H_
 
 #endif // _WX_MSW_DIB_H_