cairo_win32_surface_create() must be passed the window HDC and not HWND
itself, the old code calling it was broken.
Add WindowHDC object and pass its HDC to this function now to make it work.
Closes #14194.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71209
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
#include <cairo.h>
#ifdef __WXMSW__
#include <cairo-win32.h>
#include <cairo.h>
#ifdef __WXMSW__
#include <cairo-win32.h>
+// Notice that the order is important: cairo-win32.h includes windows.h which
+// pollutes the global name space with macros so include our own header which
+// #undefines them after it.
+#include "wx/msw/private.h"
#include "wx/gtk/dc.h"
#endif
#include "wx/gtk/dc.h"
#endif
-#ifdef __WXMSW__
-#include <cairo-win32.h>
-// We must do this as cairo-win32.h includes windows.h which pollutes the
-// global name space with macros.
-#include "wx/msw/winundef.h"
-#endif
-
#ifdef __WXMAC__
#include "wx/osx/private.h"
#include <cairo-quartz.h>
#ifdef __WXMAC__
#include "wx/osx/private.h"
#include <cairo-quartz.h>
virtual void Clip( const wxRegion ®ion );
#ifdef __WXMSW__
cairo_surface_t* m_mswSurface;
virtual void Clip( const wxRegion ®ion );
#ifdef __WXMSW__
cairo_surface_t* m_mswSurface;
+ WindowHDC m_mswWindowHDC;
#endif
// clips drawings to the rect
#endif
// clips drawings to the rect
}
wxCairoContext::wxCairoContext( wxGraphicsRenderer* renderer, wxWindow *window)
}
wxCairoContext::wxCairoContext( wxGraphicsRenderer* renderer, wxWindow *window)
-: wxGraphicsContext(renderer)
+ : wxGraphicsContext(renderer)
+#ifdef __WXMSW__
+ , m_mswWindowHDC(GetHwndOf(window))
+#endif
{
m_enableOffset = true;
#ifdef __WXGTK__
{
m_enableOffset = true;
#ifdef __WXGTK__
- m_mswSurface = cairo_win32_surface_create((HDC)window->GetHandle());
+ m_mswSurface = cairo_win32_surface_create((HDC)m_mswWindowHDC);
Init(cairo_create(m_mswSurface));
#endif
Init(cairo_create(m_mswSurface));
#endif