added MSWPrintChild() for drawing child background (replaces patch 1108389)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32208 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2005-02-19 20:49:50 +00:00
parent 31059a74bd
commit 07c1932792
4 changed files with 57 additions and 0 deletions

View File

@ -212,6 +212,9 @@ protected:
// creates the brush to be used for drawing the tab control background
void UpdateBgBrush();
// paint themed children background here
virtual bool MSWPrintChild(wxWindow *win, WXWPARAM wParam, WXLPARAM lParam);
#endif // wxUSE_UXTHEME
// the current selection (-1 if none)

View File

@ -398,6 +398,16 @@ public:
// windows via their MSWGetBgBrushForChild() recursively
WXHBRUSH MSWGetBgBrush(WXHDC hDC);
// overriding this method gives the parent window the opportunity to
// process WM_PRINTCLIENT for its children: this is currently used by
// wxNotebook to draw themed background for them
//
// return true if the message was processed or false to use default logic
// for it (currently this means handling it just as WM_PAINT i.e. render
// the control into the provided DC)
virtual bool MSWPrintChild(wxWindow *win, WXWPARAM wParam, WXLPARAM lParam);
// Responds to colour changes: passes event on to children.
void OnSysColourChanged(wxSysColourChangedEvent& event);

View File

@ -1002,6 +1002,33 @@ wxColour wxNotebook::MSWGetBgColourForChild(wxWindow *win)
return c == CLR_INVALID ? wxNullColour : wxRGBToColour(c);
}
bool
wxNotebook::MSWPrintChild(wxWindow *win,
WXWPARAM wParam,
WXLPARAM WXUNUSED(lParam))
{
RECT rc;
::GetClientRect(GetHwnd(), &rc);
TabCtrl_AdjustRect(GetHwnd(), true, &rc);
::MapWindowPoints(GetHwnd(), GetHwndOf(win), (POINT *)&rc, 2);
wxUxThemeHandle theme(win, L"TAB");
if ( theme )
{
wxUxThemeEngine::Get()->DrawThemeBackground
(
theme,
(WXHDC)wParam,
9 /* TABP_PANE */,
0,
&rc,
NULL
);
}
return true;
}
#endif // wxUSE_UXTHEME
// Windows only: attempts to get colour for UX theme page background

View File

@ -2312,12 +2312,21 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
}
#ifdef WM_PRINT
case WM_PRINTCLIENT:
if ( GetParent() &&
GetParent()->MSWPrintChild(this, wParam, lParam) )
{
processed = true;
}
break;
case WM_PRINT:
{
if ( lParam & PRF_ERASEBKGND )
HandleEraseBkgnd((WXHDC)(HDC)wParam);
wxPaintDCEx dc((wxWindow *)this, (WXHDC)wParam);
processed = HandlePaint();
}
break;
@ -4035,6 +4044,14 @@ WXHBRUSH wxWindowMSW::MSWGetBgBrush(WXHDC hDC)
return 0;
}
bool
wxWindowMSW::MSWPrintChild(wxWindow * WXUNUSED(win),
WXWPARAM WXUNUSED(wParam),
WXLPARAM WXUNUSED(lParam))
{
return false;
}
// ---------------------------------------------------------------------------
// moving and resizing
// ---------------------------------------------------------------------------