X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e6feb95a79834836e88143b15d9f424ebe79621..b225f65995e9eccefe9b502568b1b8e40629cd1a:/src/msw/dcclient.cpp?ds=sidebyside diff --git a/src/msw/dcclient.cpp b/src/msw/dcclient.cpp index 440e8290b9..d853cf580e 100644 --- a/src/msw/dcclient.cpp +++ b/src/msw/dcclient.cpp @@ -212,11 +212,14 @@ wxPaintDC::wxPaintDC(wxWindow *canvas) else // not in cache, create a new one { m_hDC = (WXHDC)::BeginPaint(GetHwndOf(m_canvas), &g_paintStruct); - ms_cache.Add(new wxPaintDCInfo(m_canvas, this)); + if (m_hDC) + ms_cache.Add(new wxPaintDCInfo(m_canvas, this)); } - // (re)set the DC parameters - InitDC(); + // (re)set the DC parameters. + // Note: at this point m_hDC can be NULL under MicroWindows, when dragging. + if (GetHDC()) + InitDC(); } wxPaintDC::~wxPaintDC() @@ -234,7 +237,7 @@ wxPaintDC::~wxPaintDC() { ::EndPaint(GetHwndOf(m_canvas), &g_paintStruct); - ms_cache.Remove(index); + ms_cache.RemoveAt(index); // Reduce the number of bogus reports of non-freed memory // at app exit