// wxWidgets
#ifndef WX_PRECOMP
#include "wx/string.h"
+ #include "wx/dc.h"
#endif // WX_PRECOMP
#include "wx/log.h"
long style,
const wxString& name)
{
- // Does ComCtl32 support non-top tabs?
- int verComCtl32 = wxApp::GetComCtl32Version();
- if ( verComCtl32 < 470 || verComCtl32 >= 600 )
+ // comctl32.dll 6.0 doesn't support non-top tabs with visual styles (the
+ // control is simply not rendered correctly), so disable them in this case
+ const int verComCtl32 = wxApp::GetComCtl32Version();
+ if ( verComCtl32 == 600 )
{
- if (style & wxNB_BOTTOM)
- style &= ~wxNB_BOTTOM;
-
- if (style & wxNB_LEFT)
- style &= ~wxNB_LEFT;
-
- if (style & wxNB_RIGHT)
- style &= ~wxNB_RIGHT;
+ // check if we use themes at all -- if we don't, we're still ok
+#if wxUSE_UXTHEME
+ if ( wxUxThemeEngine::GetIfActive() )
+#endif
+ {
+ style &= ~(wxNB_BOTTOM | wxNB_LEFT | wxNB_RIGHT);
+ }
}
if ( !CreateControl(parent, id, pos, size, style | wxTAB_TRAVERSAL,
}
void wxNotebook::DoEraseBackground(wxEraseEvent& event)
+{
+ DoEraseBackground((wxWindow *)event.GetEventObject(),
+ (WXHDC)GetHdcOf(*event.GetDC()));
+}
+
+void wxNotebook::DoEraseBackground(wxWindow *win, WXHDC hDC)
{
// we can either draw the background ourselves or let DrawThemeBackground()
// do it, but as we already have the correct brush, let's do it ourselves
// (note that we use the same code in wxControl::MSWControlColor(), so if
// it breaks, it should at least break in consistent way)
- wxWindow *win = (wxWindow *)event.GetEventObject();
- HDC hdc = GetHdcOf(*event.GetDC());
- WXHBRUSH hbr = GetThemeBackgroundBrush((WXHDC)hdc, win);
+ WXHBRUSH hbr = GetThemeBackgroundBrush(hDC, win);
if ( hbr )
{
RECT rectClient;
::GetClientRect(GetHwndOf(win), &rectClient);
- ::FillRect(hdc, &rectClient, (HBRUSH)hbr);
+ ::FillRect((HDC)hDC, &rectClient, (HBRUSH)hbr);
}
}