X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/47e92c4137ab1a55e8944ae54e726f0cade4cdf2..ed45e26357928c1f33d317fd7dfb1ec617389584:/src/msw/bmpbuttn.cpp diff --git a/src/msw/bmpbuttn.cpp b/src/msw/bmpbuttn.cpp index 744c8a48b6..32d792972a 100644 --- a/src/msw/bmpbuttn.cpp +++ b/src/msw/bmpbuttn.cpp @@ -75,13 +75,29 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit 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(), @@ -103,6 +119,9 @@ 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) { #if defined(__WIN95__) @@ -144,8 +163,22 @@ bool wxBitmapButton::MSWOnDraw(WXDRAWITEMSTRUCT *item) 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 ) { @@ -166,7 +199,7 @@ bool wxBitmapButton::MSWOnDraw(WXDRAWITEMSTRUCT *item) 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 ) { @@ -308,9 +341,6 @@ void wxBitmapButton::DrawFace( WXHDC dc, int left, int top, int right, int botto #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; @@ -325,6 +355,7 @@ void wxBitmapButton::DrawButtonFocus( WXHDC dc, int left, int top, int right, in if ( sel ) OffsetRect( &rect, 1, 1 ); */ + (void)sel; DrawFocusRect( (HDC) dc, &rect ); }