/////////////////////////////////////////////////////////////////////////////
-// Name: bmpbuttn.cpp
+// Name: src/msw/bmpbuttn.cpp
// Purpose: wxBitmapButton
// Author: Julian Smart
// Modified by:
#include "wx/wxprec.h"
#ifdef __BORLANDC__
-#pragma hdrstop
+ #pragma hdrstop
#endif
+#if wxUSE_BMPBUTTON
+
#ifndef WX_PRECOMP
#include "wx/bmpbuttn.h"
#include "wx/log.h"
const wxValidator& validator,
const wxString& name)
{
- m_buttonBitmap = bitmap;
+ m_bmpNormal = bitmap;
SetName(name);
#if wxUSE_VALIDATORS
m_backgroundColour = parent->GetBackgroundColour();
m_foregroundColour = parent->GetForegroundColour();
m_windowStyle = style;
- m_marginX = 0;
- m_marginY = 0;
if ( style & wxBU_AUTODRAW )
{
if ( height == -1 && bitmap.Ok())
height = bitmap.GetHeight() + 2*m_marginY;
+ long msStyle = WS_VISIBLE | WS_TABSTOP | WS_CHILD | BS_OWNERDRAW ;
+
+ if ( m_windowStyle & wxCLIP_SIBLINGS )
+ msStyle |= WS_CLIPSIBLINGS;
+
+#ifdef __WIN32__
+ if(m_windowStyle & wxBU_LEFT)
+ msStyle |= BS_LEFT;
+ if(m_windowStyle & wxBU_RIGHT)
+ msStyle |= BS_RIGHT;
+ if(m_windowStyle & wxBU_TOP)
+ msStyle |= BS_TOP;
+ if(m_windowStyle & wxBU_BOTTOM)
+ msStyle |= BS_BOTTOM;
+#endif
+
m_hWnd = (WXHWND)CreateWindowEx
(
0,
wxT("BUTTON"),
wxT(""),
- WS_VISIBLE | WS_TABSTOP | WS_CHILD | BS_OWNERDRAW ,
- 0, 0, 0, 0,
+ msStyle,
+ 0, 0, 0, 0,
GetWinHwnd(parent),
(HMENU)m_windowId,
wxGetInstance(),
return TRUE;
}
-void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap)
-{
- m_buttonBitmap = bitmap;
-}
+// VZ: should be at the very least less than wxDEFAULT_BUTTON_MARGIN
+#define FOCUS_MARGIN 3
bool wxBitmapButton::MSWOnDraw(WXDRAWITEMSTRUCT *item)
{
// choose the bitmap to use depending on the button state
wxBitmap* bitmap;
- if ( isSelected && m_buttonBitmapSelected.Ok() )
- bitmap = &m_buttonBitmapSelected;
- else if ((state & ODS_FOCUS) && m_buttonBitmapFocus.Ok())
- bitmap = &m_buttonBitmapFocus;
- else if ((state & ODS_DISABLED) && m_buttonBitmapDisabled.Ok())
- bitmap = &m_buttonBitmapDisabled;
+ if ( isSelected && m_bmpSelected.Ok() )
+ bitmap = &m_bmpSelected;
+ else if ((state & ODS_FOCUS) && m_bmpFocus.Ok())
+ bitmap = &m_bmpFocus;
+ else if ((state & ODS_DISABLED) && m_bmpDisabled.Ok())
+ bitmap = &m_bmpDisabled;
else
- bitmap = &m_buttonBitmap;
+ bitmap = &m_bmpNormal;
if ( !bitmap->Ok() )
return FALSE;
int height = lpDIS->rcItem.bottom - y;
int wBmp = bitmap->GetWidth();
int hBmp = bitmap->GetHeight();
- int x1 = x + (width - wBmp) / 2;
- int y1 = y + (height - hBmp) / 2;
+
+ int x1,y1;
+
+ if(m_windowStyle & wxBU_LEFT)
+ x1 = x + (FOCUS_MARGIN+1);
+ else if(m_windowStyle & wxBU_RIGHT)
+ x1 = x + (width - wBmp) - (FOCUS_MARGIN+1);
+ else
+ x1 = x + (width - wBmp) / 2;
+
+ if(m_windowStyle & wxBU_TOP)
+ y1 = y + (FOCUS_MARGIN+1);
+ else if(m_windowStyle & wxBU_BOTTOM)
+ y1 = y + (height - hBmp) - (FOCUS_MARGIN+1);
+ else
+ y1 = y + (height - hBmp) / 2;
if ( isSelected && autoDraw )
{
wxDC dst;
dst.SetHDC((WXHDC) hDC, FALSE);
dst.DrawBitmap(*bitmap, x1, y1, TRUE);
-
+
// draw focus / disabled state, if auto-drawing
if ( (state & ODS_DISABLED) && autoDraw )
{
#endif // defined(__WIN95__)
-// VZ: should be at the very least less than wxDEFAULT_BUTTON_MARGIN
-#define FOCUS_MARGIN 3
-
void wxBitmapButton::DrawButtonFocus( WXHDC dc, int left, int top, int right, int bottom, bool sel )
{
RECT rect;
if ( sel )
OffsetRect( &rect, 1, 1 );
*/
+ (void)sel;
DrawFocusRect( (HDC) dc, &rect );
}
{
wxButton::SetDefault();
}
+
+#endif // wxUSE_BMPBUTTON