]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/private.h
add ability to create wxEnhMetaFileDC based on a reference DC
[wxWidgets.git] / include / wx / msw / private.h
index ce738893b12e8e9bf739b0e3fe3488be656d003c..6f8f86e5a2b45994e927168c8c56d973ffc54f19 100644 (file)
@@ -289,7 +289,9 @@ inline void wxCopyRectToRECT(const wxRect& rect, RECT& rc)
 // translations between HIMETRIC units (which OLE likes) and pixels (which are
 // liked by all the others) - implemented in msw/utilsexc.cpp
 extern void HIMETRICToPixel(LONG *x, LONG *y);
+extern void HIMETRICToPixel(LONG *x, LONG *y, HDC hdcRef);
 extern void PixelToHIMETRIC(LONG *x, LONG *y);
+extern void PixelToHIMETRIC(LONG *x, LONG *y, HDC hdcRef);
 
 // Windows convention of the mask is opposed to the wxWidgets one, so we need
 // to invert the mask each time we pass one/get one to/from Windows
@@ -306,6 +308,22 @@ extern HICON wxBitmapToHICON(const wxBitmap& bmp);
 extern
 HCURSOR wxBitmapToHCURSOR(const wxBitmap& bmp, int hotSpotX, int hotSpotY);
 
+
+#if wxUSE_OWNER_DRAWN
+
+// Draw the bitmap in specified state (this is used by owner drawn controls)
+enum wxDSBStates
+{
+    wxDSB_NORMAL = 0,
+    wxDSB_SELECTED,
+    wxDSB_DISABLED
+};
+
+extern
+BOOL wxDrawStateBitmap(HDC hDC, HBITMAP hBitmap, int x, int y, UINT uState);
+
+#endif // wxUSE_OWNER_DRAWN
+
 // get (x, y) from DWORD - notice that HI/LOWORD can *not* be used because they
 // will fail on system with multiple monitors where the coords may be negative
 //
@@ -382,7 +400,7 @@ public:
 private:
     HDC m_hdc;
 
-    DECLARE_NO_COPY_CLASS(ScreenHDC)
+    wxDECLARE_NO_COPY_CLASS(ScreenHDC);
 };
 
 // the same as ScreenHDC but for window DCs
@@ -398,7 +416,7 @@ private:
    HWND m_hwnd;
    HDC m_hdc;
 
-   DECLARE_NO_COPY_CLASS(WindowHDC)
+   wxDECLARE_NO_COPY_CLASS(WindowHDC);
 };
 
 // the same as ScreenHDC but for memory DCs: creates the HDC compatible with
@@ -414,7 +432,7 @@ public:
 private:
     HDC m_hdc;
 
-    DECLARE_NO_COPY_CLASS(MemoryHDC)
+    wxDECLARE_NO_COPY_CLASS(MemoryHDC);
 };
 
 // a class which selects a GDI object into a DC in its ctor and deselects in
@@ -446,7 +464,7 @@ private:
     HDC m_hdc;
     HGDIOBJ m_hgdiobj;
 
-    DECLARE_NO_COPY_CLASS(SelectInHDC)
+    wxDECLARE_NO_COPY_CLASS(SelectInHDC);
 };
 
 // a class which cleans up any GDI object
@@ -563,7 +581,7 @@ public:
 private:
     HDC m_hdc;
 
-    DECLARE_NO_COPY_CLASS(HDCClipper)
+    wxDECLARE_NO_COPY_CLASS(HDCClipper);
 };
 
 // set the given map mode for the life time of this object
@@ -594,7 +612,7 @@ private:
         HDC m_hdc;
         int m_modeOld;
 
-        DECLARE_NO_COPY_CLASS(HDCMapModeChanger)
+        wxDECLARE_NO_COPY_CLASS(HDCMapModeChanger);
     };
 
     #define wxCHANGE_HDC_MAP_MODE(hdc, mm) \
@@ -605,14 +623,25 @@ private:
 class GlobalPtr
 {
 public:
+    // default ctor, call Init() later
+    GlobalPtr()
+    {
+        m_hGlobal = NULL;
+    }
+
     // allocates a block of given size
-    GlobalPtr(size_t size, unsigned flags = GMEM_MOVEABLE)
+    void Init(size_t size, unsigned flags = GMEM_MOVEABLE)
     {
         m_hGlobal = ::GlobalAlloc(flags, size);
         if ( !m_hGlobal )
             wxLogLastError(_T("GlobalAlloc"));
     }
 
+    GlobalPtr(size_t size, unsigned flags = GMEM_MOVEABLE)
+    {
+        Init(size, flags);
+    }
+
     ~GlobalPtr()
     {
         if ( m_hGlobal && ::GlobalFree(m_hGlobal) )
@@ -625,7 +654,7 @@ public:
 private:
     HGLOBAL m_hGlobal;
 
-    DECLARE_NO_COPY_CLASS(GlobalPtr)
+    wxDECLARE_NO_COPY_CLASS(GlobalPtr);
 };
 
 // when working with global pointers (which is unfortunately still necessary
@@ -665,14 +694,12 @@ public:
     {
         if ( m_hGlobal && !GlobalUnlock(m_hGlobal) )
         {
-#ifdef __WXDEBUG__
             // this might happen simply because the block became unlocked
             DWORD dwLastError = ::GetLastError();
             if ( dwLastError != NO_ERROR )
             {
                 wxLogApiError(_T("GlobalUnlock"), dwLastError);
             }
-#endif // __WXDEBUG__
         }
     }
 
@@ -683,7 +710,7 @@ private:
     HGLOBAL m_hGlobal;
     void *m_ptr;
 
-    DECLARE_NO_COPY_CLASS(GlobalPtrLock)
+    wxDECLARE_NO_COPY_CLASS(GlobalPtrLock);
 };
 
 // register the class when it is first needed and unregister it in dtor
@@ -930,7 +957,7 @@ extern WXDLLIMPEXP_CORE wxWindow* wxFindWinFromHandle(HWND hwnd);
 // without STRICT WXHWND is the same as HWND anyhow
 inline wxWindow* wxFindWinFromHandle(WXHWND hWnd)
 {
-    return wxFindWinFromHandle(wx_static_cast(HWND, hWnd));
+    return wxFindWinFromHandle(static_cast<HWND>(hWnd));
 }
 
 // find the window for HWND which is part of some wxWindow, i.e. unlike