// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
-// Licence: wxWidgets licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#endif
#include "wx/msw/private.h"
+#include "wx/image.h"
// ----------------------------------------------------------------------------
// macros
wxFLAGS_MEMBER(wxBORDER_RAISED)
wxFLAGS_MEMBER(wxBORDER_STATIC)
wxFLAGS_MEMBER(wxBORDER_NONE)
-
+
// old style border flags
wxFLAGS_MEMBER(wxSIMPLE_BORDER)
wxFLAGS_MEMBER(wxSUNKEN_BORDER)
m_marginY = wxDEFAULT_BUTTON_MARGIN;
}
- int x = pos.x;
- int y = pos.y;
- int width = size.x;
- int height = size.y;
-
- if (id == -1)
+ if (id == wxID_ANY)
m_windowId = NewControlId();
else
m_windowId = id;
- if ( bitmap.Ok() )
- {
- wxSize newSize = DoGetBestSize();
- if ( width == -1 )
- width = newSize.x;
- if ( height == -1 )
- height = newSize.y;
- }
-
long msStyle = WS_VISIBLE | WS_TABSTOP | WS_CHILD | BS_OWNERDRAW ;
if ( m_windowStyle & wxCLIP_SIBLINGS )
// Subclass again for purposes of dialog editing mode
SubclassWin(m_hWnd);
- SetFont(parent->GetFont());
+ SetPosition(pos);
+ SetBestSize(size);
- SetSize(x, y, width, height);
+ return true;
+}
+
+bool wxBitmapButton::SetBackgroundColour(const wxColour& colour)
+{
+ if ( !wxBitmapButtonBase::SetBackgroundColour(colour) )
+ {
+ // didn't change
+ return false;
+ }
+
+ // invalidate the brush, it will be recreated the next time it's needed
+ m_brushDisabled = wxNullBrush;
return true;
}
DrawFocusRect( (HDC) dc, &rect );
}
-extern HBRUSH wxDisableButtonBrush;
-void wxBitmapButton::DrawButtonDisable( WXHDC dc, int left, int top, int right,
- int bottom, bool with_marg )
+void
+wxBitmapButton::DrawButtonDisable( WXHDC dc,
+ int left, int top, int right, int bottom,
+ bool with_marg )
{
- HBRUSH old = (HBRUSH) SelectObject( (HDC) dc, wxDisableButtonBrush );
+ if ( !m_brushDisabled.Ok() )
+ {
+ // draw a bitmap with two black and two background colour pixels
+ wxBitmap bmp(2, 2);
+ wxMemoryDC dc;
+ dc.SelectObject(bmp);
+ dc.SetPen(*wxBLACK_PEN);
+ dc.DrawPoint(0, 0);
+ dc.DrawPoint(1, 1);
+ dc.SetPen(GetBackgroundColour());
+ dc.DrawPoint(0, 1);
+ dc.DrawPoint(1, 0);
+
+ m_brushDisabled = wxBrush(bmp);
+ }
+
+ SelectInHDC selectBrush((HDC)dc, GetHbrushOf(m_brushDisabled));
// ROP for "dest |= pattern" operation -- as it doesn't have a standard
// name, give it our own
}
::PatBlt( (HDC) dc, left, top, right, bottom, PATTERNPAINT);
-
- ::SelectObject( (HDC) dc, old );
}
void wxBitmapButton::SetDefault()