]> git.saurik.com Git - wxWidgets.git/commitdiff
allow specifying the size of wxDCTemp and do specify it for the one used with wxErase...
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 26 Sep 2006 23:51:29 +0000 (23:51 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 26 Sep 2006 23:51:29 +0000 (23:51 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/dc.h
src/msw/window.cpp

index 1bfa0488d6601ec94cb2c1c4cff592e7abde7d1b..a6021d164f069b864f67dc695c158bba9eb306dd 100644 (file)
@@ -297,7 +297,11 @@ protected:
 class WXDLLEXPORT wxDCTemp : public wxDC
 {
 public:
 class WXDLLEXPORT wxDCTemp : public wxDC
 {
 public:
-    wxDCTemp(WXHDC hdc) : wxDC(hdc)
+    // construct a temporary DC with the specified HDC and size (it should be
+    // specified whenever we know it for this HDC)
+    wxDCTemp(WXHDC hdc, const wxSize& size = wxDefaultSize)
+        : wxDC(hdc),
+          m_size(size)
     {
     }
 
     {
     }
 
@@ -310,15 +314,20 @@ public:
 protected:
     virtual void DoGetSize(int *w, int *h) const
     {
 protected:
     virtual void DoGetSize(int *w, int *h) const
     {
-        wxFAIL_MSG( _T("no way to retrieve the size of generic DC") );
+        wxASSERT_MSG( m_size.IsFullySpecified(),
+                      _T("size of this DC hadn't been set and is unknown") );
 
         if ( w )
 
         if ( w )
-            *w = 0;
+            *w = m_size.x;
         if ( h )
         if ( h )
-            *h = 0;
+            *h = m_size.y;
     }
 
 private:
     }
 
 private:
+    // size of this DC must be explicitly set by SetSize() as we have no way to
+    // find it ourselves
+    const wxSize m_size;
+
     DECLARE_NO_COPY_CLASS(wxDCTemp)
 };
 
     DECLARE_NO_COPY_CLASS(wxDCTemp)
 };
 
index eb18a5e6b1d660f0d6c61e112fbef77691ecb9cf..f5e330a252054e110e4a2158745926ea68004188 100644 (file)
@@ -4365,7 +4365,7 @@ void wxWindowMSW::OnPaint(wxPaintEvent& event)
 
 bool wxWindowMSW::HandleEraseBkgnd(WXHDC hdc)
 {
 
 bool wxWindowMSW::HandleEraseBkgnd(WXHDC hdc)
 {
-    wxDCTemp dc(hdc);
+    wxDCTemp dc(hdc, GetClientSize());
 
     dc.SetHDC(hdc);
     dc.SetWindow((wxWindow *)this);
 
     dc.SetHDC(hdc);
     dc.SetWindow((wxWindow *)this);