X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/91f2c1540f435b4e0546f8404e97571cb04b4fd8..1e52188741389278cd99abf79218162c87024ba3:/src/msw/button.cpp diff --git a/src/msw/button.cpp b/src/msw/button.cpp index 2763c945b0..8ee6217a77 100644 --- a/src/msw/button.cpp +++ b/src/msw/button.cpp @@ -17,7 +17,7 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "button.h" #endif @@ -46,7 +46,79 @@ // macros // ---------------------------------------------------------------------------- +#if wxUSE_EXTENDED_RTTI + +enum wxButtonStyleBits +{ + wxButtonExactFitBit = 0 , + wxButtonLeftBit = 6 , + wxButtonTopBit = 7 , + wxButtonRightBit = 8 , + wxButtonBottomBit = 9 , + +// wxNoFullRepaintOnResizeBit = 16 , +// wxPopUpWindowBit = 17 , + wxWantCharsBit = 18 , +// wxTabTraversalBit = 19 , + + wxTransparentWindowBit = 20 , + wxBorderNoneBit = 21 , +// wxClipChildrenBit = 22 , +// wxAlwaysShowScrollBarsBit = 23 , + + wxBorderStaticBit = 24 , + wxBorderSimpleBit = 25 , + wxBorderRaisedBit = 26 , + wxBorderSunkenBit = 27 , + + wxBorderDoubleBit = 28 , +// wxCaptionBit = 29 , +// wxClipSiblingsBit = 29 , // caption not used for non toplevel +// wxHScrolBit = 30 , +// wxVScrollBit = 31 , +} ; + +typedef wxFlags wxButtonStyleFlags ; + +WX_BEGIN_ENUM( wxButtonStyleBits) + WX_ENUM_MEMBER( wxButtonExactFitBit) + WX_ENUM_MEMBER( wxButtonLeftBit) + WX_ENUM_MEMBER( wxButtonTopBit) + WX_ENUM_MEMBER( wxButtonRightBit) + WX_ENUM_MEMBER( wxButtonBottomBit) + WX_ENUM_MEMBER( wxWantCharsBit) + WX_ENUM_MEMBER( wxTransparentWindowBit) + WX_ENUM_MEMBER( wxBorderNoneBit) + WX_ENUM_MEMBER( wxBorderStaticBit) + WX_ENUM_MEMBER( wxBorderSimpleBit) + WX_ENUM_MEMBER( wxBorderRaisedBit) + WX_ENUM_MEMBER( wxBorderSunkenBit) + WX_ENUM_MEMBER( wxBorderDoubleBit) +WX_END_ENUM( wxButtonStyleBits) + +WX_IMPLEMENT_SET_STREAMING( wxButtonStyleFlags , wxButtonStyleBits) + +IMPLEMENT_DYNAMIC_CLASS_XTI(wxButton, wxControl,"wx/button.h") + +WX_BEGIN_PROPERTIES_TABLE(wxButton) + WX_DELEGATE( OnClick , wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEvent , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) + + WX_PROPERTY( Font , wxFont , SetFont , GetFont , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) + WX_PROPERTY( Label, wxString , SetLabel, GetLabel, wxEmptyString, 0 /*flags*/ , wxT("Helpstring") , wxT("group") ) + + WX_PROPERTY_FLAGS( WindowStyle , wxButtonStyleFlags , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style + +WX_END_PROPERTIES_TABLE() + +WX_BEGIN_HANDLERS_TABLE(wxButton) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_6( wxButton , wxWindow* , Parent , wxWindowID , Id , wxString , Label , wxPoint , Position , wxSize , Size , long , WindowStyle ) + + +#else IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) +#endif // this macro tries to adjust the default button height to a reasonable value // using the char height as the base @@ -424,11 +496,10 @@ static void DrawButtonText(HDC hdc, static void DrawRect(HDC hdc, const RECT& r) { - MoveToEx(hdc, r.left, r.top, NULL); - LineTo(hdc, r.right, r.top); - LineTo(hdc, r.right, r.bottom); - LineTo(hdc, r.left, r.bottom); - LineTo(hdc, r.left, r.top); + wxDrawLine(hdc, r.left, r.top, r.right, r.top); + wxDrawLine(hdc, r.right, r.top, r.right, r.bottom); + wxDrawLine(hdc, r.right, r.bottom, r.left, r.bottom); + wxDrawLine(hdc, r.left, r.bottom, r.left, r.top); } void wxButton::MakeOwnerDrawn() @@ -542,24 +613,20 @@ static void DrawButtonFrame(HDC hdc, const RECT& rectBtn, InflateRect(&r, -1, -1); } - MoveToEx(hdc, r.left, r.bottom, NULL); - LineTo(hdc, r.right, r.bottom); - LineTo(hdc, r.right, r.top - 1); + wxDrawLine(hdc, r.left, r.bottom, r.right, r.bottom); + wxDrawLine(hdc, r.right, r.bottom, r.right, r.top - 1); (void)SelectObject(hdc, hpenWhite); - MoveToEx(hdc, r.left, r.bottom - 1, NULL); - LineTo(hdc, r.left, r.top); - LineTo(hdc, r.right, r.top); + wxDrawLine(hdc, r.left, r.bottom - 1, r.left, r.top); + wxDrawLine(hdc, r.left, r.top, r.right, r.top); (void)SelectObject(hdc, hpenLightGr); - MoveToEx(hdc, r.left + 1, r.bottom - 2, NULL); - LineTo(hdc, r.left + 1, r.top + 1); - LineTo(hdc, r.right - 1, r.top + 1); + wxDrawLine(hdc, r.left + 1, r.bottom - 2, r.left + 1, r.top + 1); + wxDrawLine(hdc, r.left + 1, r.top + 1, r.right - 1, r.top + 1); (void)SelectObject(hdc, hpenGrey); - MoveToEx(hdc, r.left + 1, r.bottom - 1, NULL); - LineTo(hdc, r.right - 1, r.bottom - 1); - LineTo(hdc, r.right - 1, r.top); + wxDrawLine(hdc, r.left + 1, r.bottom - 1, r.right - 1, r.bottom - 1); + wxDrawLine(hdc, r.right - 1, r.bottom - 1, r.right - 1, r.top); } (void)SelectObject(hdc, hpenOld);