// the event handler executed when the window background must be painted void wxWindow::OnErase(wxEraseEvent& event) { if ( !m_renderer ) { event.Skip(); return; } DoDrawBackground(*event.GetDC()); #if wxUSE_SCROLLBAR // if we have both scrollbars, we also have a square in the corner between // them which we must paint if ( m_scrollbarVert && m_scrollbarHorz ) { wxSize size = GetSize(); wxRect rectClient = GetClientRect(), rectBorder = m_renderer->GetBorderDimensions(GetBorder()); wxRect rectCorner; rectCorner.x = rectClient.GetRight() + 1; rectCorner.y = rectClient.GetBottom() + 1; rectCorner.SetRight(size.x - rectBorder.width); rectCorner.SetBottom(size.y - rectBorder.height); if ( GetUpdateRegion().Contains(rectCorner) ) { m_renderer->DrawScrollCorner(*event.GetDC(), rectCorner); } } #endif // wxUSE_SCROLLBAR }
bool wxNotebook::MSWPrintChild(WXHDC hDC, wxWindow *child) { // solid background colour overrides themed background drawing if ( !UseBgCol() && DoDrawBackground(hDC, child) ) return true; // If we're using a solid colour (for example if we've switched off // theming for this notebook), paint it if (UseBgCol()) { wxRect r = GetPageSize(); if ( r.IsEmpty() ) return false; RECT rc; wxCopyRectToRECT(r, rc); // map rect to the coords of the window we're drawing in if ( child ) ::MapWindowPoints(GetHwnd(), GetHwndOf(child), (POINT *)&rc, 2); wxBrush brush(GetBackgroundColour()); HBRUSH hbr = GetHbrushOf(brush); ::FillRect((HDC) hDC, &rc, hbr); return true; } return wxNotebookBase::MSWPrintChild(hDC, child); }
WXHBRUSH wxNotebook::QueryBgBitmap() { wxRect r = GetPageSize(); if ( r.IsEmpty() ) return 0; wxUxThemeHandle theme(this, L"TAB"); if ( !theme ) return 0; RECT rc; wxCopyRectToRECT(r, rc); WindowHDC hDC(GetHwnd()); wxUxThemeEngine::Get()->GetThemeBackgroundExtent ( theme, (HDC) hDC, 9 /* TABP_PANE */, 0, &rc, &rc ); MemoryHDC hDCMem(hDC); CompatibleBitmap hBmp(hDC, rc.right, rc.bottom); SelectInHDC selectBmp(hDCMem, hBmp); if ( !DoDrawBackground((WXHDC)(HDC)hDCMem) ) return 0; return (WXHBRUSH)::CreatePatternBrush(hBmp); }
WXHBRUSH wxNotebook::QueryBgBitmap() { wxRect r = GetPageSize(); if ( r.IsEmpty() ) return 0; WindowHDC hDC(GetHwnd()); MemoryHDC hDCMem(hDC); CompatibleBitmap hBmp(hDC, r.x + r.width, r.y + r.height); SelectInHDC selectBmp(hDCMem, hBmp); if ( !DoDrawBackground((WXHDC)(HDC)hDCMem) ) return 0; return (WXHBRUSH)::CreatePatternBrush(hBmp); }