Added wxRendererNative::DrawTitleBarBitmap().

This is currently only implemented for wxMSW as there is no advantage to use a
generic implementation compared to using wxArtProvider directly under the
other ports. But for MSW this allows to have perfectly natively looking
titlebar-like buttons.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62295 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-10-05 22:57:04 +00:00
parent 942d5e2d72
commit b50d93d1da
4 changed files with 232 additions and 31 deletions

View File

@@ -41,6 +41,11 @@ class WXDLLIMPEXP_FWD_CORE wxWindow;
#undef wxHAS_NATIVE_RENDERER
#endif
// only MSW currently provides DrawTitleBarBitmap() method
#if defined(__WXMSW__)
#define wxHAS_DRAW_TITLE_BAR_BITMAP
#endif
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
@@ -70,6 +75,19 @@ enum
wxCONTROL_DIRTY = 0x80000000
};
// title bar buttons supported by DrawTitleBarBitmap()
//
// NB: they have the same values as wxTOPLEVEL_BUTTON_XXX constants in
// wx/univ/toplevel.h as they really represent the same things
enum wxTitleBarButton
{
wxTITLEBAR_BUTTON_CLOSE = 0x01000000,
wxTITLEBAR_BUTTON_MAXIMIZE = 0x02000000,
wxTITLEBAR_BUTTON_ICONIZE = 0x04000000,
wxTITLEBAR_BUTTON_RESTORE = 0x08000000,
wxTITLEBAR_BUTTON_HELP = 0x10000000
};
// ----------------------------------------------------------------------------
// helper structs
// ----------------------------------------------------------------------------
@@ -283,6 +301,21 @@ public:
const wxRect& rect,
int flags = 0) = 0;
#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
// Draw one of the standard title bar buttons
//
// This is currently implemented only for MSW because there is no way to
// render standard title bar buttons under the other platforms, the best
// can be done is to use normal (only) images which wxArtProvider provides
// for wxART_HELP and wxART_CLOSE (but not any other title bar buttons)
virtual void DrawTitleBarBitmap(wxWindow *win,
wxDC& dc,
const wxRect& rect,
wxTitleBarButton button,
int flags = 0) = 0;
#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
// geometry functions
// ------------------
@@ -449,6 +482,15 @@ public:
int flags = 0)
{ m_rendererNative.DrawRadioBitmap(win, dc, rect, flags); }
#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
virtual void DrawTitleBarBitmap(wxWindow *win,
wxDC& dc,
const wxRect& rect,
wxTitleBarButton button,
int flags = 0)
{ m_rendererNative.DrawTitleBarBitmap(win, dc, rect, button, flags); }
#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win)
{ return m_rendererNative.GetSplitterParams(win); }