allow specifying the size of wxDCTemp and do specify it for the one used with wxEraseEvents

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-09-26 23:51:29 +00:00
parent 57d0f66a02
commit e0e6ac8acc
2 changed files with 14 additions and 5 deletions

View File

@@ -297,7 +297,11 @@ protected:
class WXDLLEXPORT wxDCTemp : public wxDC class WXDLLEXPORT wxDCTemp : public wxDC
{ {
public: 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: protected:
virtual void DoGetSize(int *w, int *h) const 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)
}; };

View 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.SetHDC(hdc);
dc.SetWindow((wxWindow *)this); dc.SetWindow((wxWindow *)this);