#endif
#include "wx/sysopt.h"
+#include "wx/dcclient.h"
#include "wx/msw/private.h"
+#include "wx/msw/dc.h"
#if wxUSE_UXTHEME
#include "wx/msw/uxtheme.h"
::SendMessage(GetHwnd(), TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DRAWDDARROWS);
#endif
- // Fix a bug on e.g. the Silver theme on WinXP where control backgrounds
- // are incorrectly drawn, by forcing the background to a specific colour.
- int majorVersion, minorVersion;
- wxGetOsVersion(& majorVersion, & minorVersion);
- if (majorVersion < 6)
- SetBackgroundColour(GetBackgroundColour());
-
return true;
}
TBREPLACEBITMAP replaceBitmap;
replaceBitmap.hInstOld = NULL;
replaceBitmap.hInstNew = NULL;
- replaceBitmap.nIDOld = (UINT) oldToolBarBitmap;
- replaceBitmap.nIDNew = (UINT) hBitmap;
+ replaceBitmap.nIDOld = (UINT_PTR)oldToolBarBitmap;
+ replaceBitmap.nIDNew = (UINT_PTR)hBitmap;
replaceBitmap.nButtons = nButtons;
if ( !::SendMessage(GetHwnd(), TB_REPLACEBITMAP,
0, (LPARAM) &replaceBitmap) )
{
TBADDBITMAP addBitmap;
addBitmap.hInst = 0;
- addBitmap.nID = (UINT) hBitmap;
+ addBitmap.nID = (UINT_PTR)hBitmap;
if ( ::SendMessage(GetHwnd(), TB_ADDBITMAP,
(WPARAM) nButtons, (LPARAM)&addBitmap) == -1 )
{
{
const wxString& label = tool->GetLabel();
if ( !label.empty() )
- button.iString = (int)label.wx_str();
+ button.iString = (INT_PTR)label.wx_str();
}
button.idCommand = tool->GetId();
void wxToolBar::OnEraseBackground(wxEraseEvent& event)
{
RECT rect = wxGetClientRect(GetHwnd());
- HDC hdc = GetHdcOf((*event.GetDC()));
+
+ wxDC *dc = event.GetDC();
+ if (!dc) return;
+ wxMSWDCImpl *impl = (wxMSWDCImpl*) dc->GetImpl();
+ HDC hdc = GetHdcOf(*impl);
int majorVersion, minorVersion;
wxGetOsVersion(& majorVersion, & minorVersion);
#endif // wxUSE_UXTHEME
- if ( UseBgCol() || (GetMSWToolbarStyle() & TBSTYLE_TRANSPARENT) )
+ // we need to always draw our background under XP, as otherwise it doesn't
+ // appear correctly with some themes (e.g. Zune one)
+ if ( majorVersion == 5 ||
+ UseBgCol() || (GetMSWToolbarStyle() & TBSTYLE_TRANSPARENT) )
{
// do draw our background
//
r.right = clientSize.x;
r.top = 0;
r.bottom = clientSize.y;
-
- HRESULT hr = theme->DrawThemeBackground(hTheme, (HDC) dc.GetHDC(), 0, 0, & r, & clipRect);
+
+ wxMSWDCImpl *impl = (wxMSWDCImpl*) dc.GetImpl();
+ HRESULT hr = theme->DrawThemeBackground(hTheme, GetHdcOf(*impl), 0, 0, & r, & clipRect);
if ( hr == S_OK )
haveRefreshed = true;
}