#include "wx/control.h"
#endif
-#if wxUSE_TOOLBAR && defined(__WIN95__) && wxUSE_TOOLBAR_NATIVE
+#if wxUSE_TOOLBAR && wxUSE_TOOLBAR_NATIVE && (!defined(_WIN32_WCE) || (_WIN32_WCE >= 400 && !defined(__POCKETPC__) && !defined(__SMARTPHONE__)))
#include "wx/toolbar.h"
-
-#if !defined(__GNUWIN32__) && !defined(__SALFORDC__)
- #include "malloc.h"
-#endif
+#include "wx/sysopt.h"
#include "wx/msw/private.h"
// conditional compilation
// ----------------------------------------------------------------------------
-// wxWindows previously always considered that toolbar buttons have light grey
+// wxWidgets previously always considered that toolbar buttons have light grey
// (0xc0c0c0) background and so ignored any bitmap masks - however, this
// doesn't work with XPMs which then appear to have black background. To make
// this work, we must respect the bitmap masks - which we do now. This should
if ( !MSWCreateToolbar(pos, size) )
return FALSE;
+ wxSetCCUnicodeFormat(GetHwnd());
+
// set up the colors and fonts
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENUBAR));
SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
// Realize() later
tool->Attach(this);
+ InvalidateBestSize();
return TRUE;
}
}
}
+ InvalidateBestSize();
return TRUE;
}
MemoryHDC memoryDC2;
#endif // USE_BITMAP_MASKS/!USE_BITMAP_MASKS
+ if (wxSystemOptions::HasOption(wxT("msw.remap")) && wxSystemOptions::GetOptionInt(wxT("msw.remap")) == 0)
+ {
+#if USE_BITMAP_MASKS
+ dcAllButtons.SelectObject(wxNullBitmap);
+#endif
+
+ // Even if we're not remapping the bitmap
+ // content, we still have to remap the background.
+ hBitmap = (HBITMAP)MapBitmap((WXHBITMAP) hBitmap,
+ totalBitmapWidth, totalBitmapHeight);
+
+#if USE_BITMAP_MASKS
+ dcAllButtons.SelectObject(bitmap);
+#endif
+ }
+
// the button position
wxCoord x = 0;
const wxBitmap& bmp = tool->GetNormalBitmap();
if ( bmp.Ok() )
{
+ int xOffset = wxMax(0, (m_defaultWidth - bmp.GetWidth())/2);
+ int yOffset = wxMax(0, (m_defaultHeight - bmp.GetHeight())/2);
#if USE_BITMAP_MASKS
// notice the last parameter: do use mask
- dcAllButtons.DrawBitmap(bmp, x, 0, TRUE);
+ dcAllButtons.DrawBitmap(bmp, x+xOffset, yOffset, TRUE);
#else // !USE_BITMAP_MASKS
SelectInHDC hdcSelector2(memoryDC2, GetHbitmapOf(bmp));
if ( !BitBlt(memoryDC,
- x, 0, m_defaultWidth, m_defaultHeight,
+ x+xOffset, yOffset, m_defaultWidth, m_defaultHeight,
memoryDC2,
0, 0, SRCCOPY) )
{
bitmap.SetHBITMAP(0);
#endif // USE_BITMAP_MASKS/!USE_BITMAP_MASKS
- // Map to system colours
- hBitmap = (HBITMAP)MapBitmap((WXHBITMAP) hBitmap,
- totalBitmapWidth, totalBitmapHeight);
+ if (!wxSystemOptions::HasOption(wxT("msw.remap")) || wxSystemOptions::GetOptionInt(wxT("msw.remap")) == 1)
+ {
+ // Map to system colours
+ hBitmap = (HBITMAP)MapBitmap((WXHBITMAP) hBitmap,
+ totalBitmapWidth, totalBitmapHeight);
+ }
bool addBitmap = TRUE;
}
}
+ InvalidateBestSize();
return TRUE;
}
}
}
-long wxToolBar::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
+WXLRESULT wxToolBar::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
switch ( nMsg )
{