X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6c9a19aabab3a878b565e6c2a5f2a3824277c4dc..9d39cef7ef8f2dddce244846cca3a346508ae2af:/src/msw/bmpbuttn.cpp diff --git a/src/msw/bmpbuttn.cpp b/src/msw/bmpbuttn.cpp index ba336ee822..fb359b0434 100644 --- a/src/msw/bmpbuttn.cpp +++ b/src/msw/bmpbuttn.cpp @@ -9,7 +9,7 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "bmpbuttn.h" #endif @@ -30,7 +30,73 @@ #include "wx/msw/private.h" +// ---------------------------------------------------------------------------- +// macros +// ---------------------------------------------------------------------------- + +#if wxUSE_EXTENDED_RTTI + +WX_DEFINE_FLAGS( wxBitmapButtonStyle ) + +WX_BEGIN_FLAGS( wxBitmapButtonStyle ) + // new style border flags, we put them first to + // use them for streaming out + WX_FLAGS_MEMBER(wxBORDER_SIMPLE) + WX_FLAGS_MEMBER(wxBORDER_SUNKEN) + WX_FLAGS_MEMBER(wxBORDER_DOUBLE) + WX_FLAGS_MEMBER(wxBORDER_RAISED) + WX_FLAGS_MEMBER(wxBORDER_STATIC) + WX_FLAGS_MEMBER(wxBORDER_NONE) + + // old style border flags + WX_FLAGS_MEMBER(wxSIMPLE_BORDER) + WX_FLAGS_MEMBER(wxSUNKEN_BORDER) + WX_FLAGS_MEMBER(wxDOUBLE_BORDER) + WX_FLAGS_MEMBER(wxRAISED_BORDER) + WX_FLAGS_MEMBER(wxSTATIC_BORDER) + WX_FLAGS_MEMBER(wxNO_BORDER) + + // standard window styles + WX_FLAGS_MEMBER(wxTAB_TRAVERSAL) + WX_FLAGS_MEMBER(wxCLIP_CHILDREN) + WX_FLAGS_MEMBER(wxTRANSPARENT_WINDOW) + WX_FLAGS_MEMBER(wxWANTS_CHARS) + WX_FLAGS_MEMBER(wxNO_FULL_REPAINT_ON_RESIZE) + WX_FLAGS_MEMBER(wxALWAYS_SHOW_SB ) + WX_FLAGS_MEMBER(wxVSCROLL) + WX_FLAGS_MEMBER(wxHSCROLL) + + WX_FLAGS_MEMBER(wxBU_AUTODRAW) + WX_FLAGS_MEMBER(wxBU_LEFT) + WX_FLAGS_MEMBER(wxBU_RIGHT) + WX_FLAGS_MEMBER(wxBU_TOP) + WX_FLAGS_MEMBER(wxBU_BOTTOM) +WX_END_FLAGS( wxBitmapButtonStyle ) + +IMPLEMENT_DYNAMIC_CLASS_XTI(wxBitmapButton, wxButton,"wx/bmpbuttn.h") + +WX_BEGIN_PROPERTIES_TABLE(wxBitmapButton) + WX_PROPERTY_FLAGS( WindowStyle , wxBitmapButtonStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style +WX_END_PROPERTIES_TABLE() + +WX_BEGIN_HANDLERS_TABLE(wxBitmapButton) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_5( wxBitmapButton , wxWindow* , Parent , wxWindowID , Id , wxBitmap , Bitmap , wxPoint , Position , wxSize , Size ) + +#else IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton) +#endif + +/* +TODO PROPERTIES : + +long "style" , wxBU_AUTODRAW +bool "default" , 0 +bitmap "selected" , +bitmap "focus" , +bitmap "disabled" , +*/ #define BUTTON_HEIGHT_FACTOR (EDIT_CONTROL_FACTOR * 1.1) @@ -95,7 +161,7 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit ( 0, wxT("BUTTON"), - wxT(""), + wxEmptyString, msStyle, 0, 0, 0, 0, GetWinHwnd(parent), @@ -119,7 +185,7 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit bool wxBitmapButton::MSWOnDraw(WXDRAWITEMSTRUCT *item) { -#if defined(__WIN95__) +#ifndef __WXWINCE__ long style = GetWindowLong((HWND) GetHWND(), GWL_STYLE); if (style & BS_BITMAP) { @@ -234,7 +300,10 @@ void wxBitmapButton::DrawFace( WXHDC dc, int left, int top, int right, int botto penLight = CreatePen(PS_SOLID, 0, GetSysColor(COLOR_3DLIGHT)); penShadow = CreatePen(PS_SOLID, 0, GetSysColor(COLOR_3DSHADOW)); penDkShadow = CreatePen(PS_SOLID, 0, GetSysColor(COLOR_3DDKSHADOW)); - brushFace = CreateSolidBrush(GetSysColor(COLOR_BTNFACE)); + // brushFace = CreateSolidBrush(GetSysColor(COLOR_BTNFACE)); + // Taking the background colour fits in better with + // Windows XP themes. + brushFace = CreateSolidBrush(m_backgroundColour.m_pixel); // draw the rectangle RECT rect; @@ -246,20 +315,21 @@ void wxBitmapButton::DrawFace( WXHDC dc, int left, int top, int right, int botto // draw the border oldp = (HPEN) SelectObject( (HDC) dc, sel? penDkShadow : penHiLight); - MoveToEx((HDC) dc, left, top, NULL); LineTo((HDC) dc, right-1, top); - MoveToEx((HDC) dc, left, top+1, NULL); LineTo((HDC) dc, left, bottom-1); + + wxDrawLine((HDC) dc, left, top, right-1, top); + wxDrawLine((HDC) dc, left, top+1, left, bottom-1); SelectObject( (HDC) dc, sel? penShadow : penLight); - MoveToEx((HDC) dc, left+1, top+1, NULL); LineTo((HDC) dc, right-2, top+1); - MoveToEx((HDC) dc, left+1, top+2, NULL); LineTo((HDC) dc, left+1, bottom-2); + wxDrawLine((HDC) dc, left+1, top+1, right-2, top+1); + wxDrawLine((HDC) dc, left+1, top+2, left+1, bottom-2); SelectObject( (HDC) dc, sel? penLight : penShadow); - MoveToEx((HDC) dc, left+1, bottom-2, NULL); LineTo((HDC) dc, right-1, bottom-2); - MoveToEx((HDC) dc, right-2, bottom-3, NULL); LineTo((HDC) dc, right-2, top); + wxDrawLine((HDC) dc, left+1, bottom-2, right-1, bottom-2); + wxDrawLine((HDC) dc, right-2, bottom-3, right-2, top); SelectObject( (HDC) dc, sel? penHiLight : penDkShadow); - MoveToEx((HDC) dc, left, bottom-1, NULL); LineTo((HDC) dc, right+2, bottom-1); - MoveToEx((HDC) dc, right-1, bottom-2, NULL); LineTo((HDC) dc, right-1, top-1); + wxDrawLine((HDC) dc, left, bottom-1, right+2, bottom-1); + wxDrawLine((HDC) dc, right-1, bottom-2, right-1, top-1); // delete allocated resources SelectObject((HDC) dc,oldp);