X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e90c1d2a19361551eb07778280f22be3e759cf64..0fe5e8fea017ecb73f8aaa8ceb745feb269b3f79:/src/msw/slider95.cpp diff --git a/src/msw/slider95.cpp b/src/msw/slider95.cpp index fc1dd236c5..e72bb09b17 100644 --- a/src/msw/slider95.cpp +++ b/src/msw/slider95.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -20,10 +20,12 @@ #pragma hdrstop #endif +#if wxUSE_SLIDER + #ifndef WX_PRECOMP -#include -#include -#include +#include "wx/utils.h" +#include "wx/brush.h" +#include "wx/slider.h" #endif #ifdef __WIN95__ @@ -31,13 +33,11 @@ #include "wx/msw/slider95.h" #include "wx/msw/private.h" -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) || defined(wxUSE_NORLANDER_HEADERS) -#include +#if defined(__WIN95__) && !((defined(__GNUWIN32_OLD__) || defined(__TWIN32__)) && !defined(__CYGWIN10__)) + #include #endif -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSlider95, wxControl) -#endif +IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl) // Slider wxSlider95::wxSlider95() @@ -60,7 +60,9 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, const wxString& name) { SetName(name); +#if wxUSE_VALIDATORS SetValidator(validator); +#endif // wxUSE_VALIDATORS if (parent) parent->AddChild(this); SetBackgroundColour(parent->GetBackgroundColour()) ; @@ -84,29 +86,40 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, int width = size.x; int height = size.y; - long msStyle ; + long msStyle=0 ; + long wstyle=0 ; + + if ( m_windowStyle & wxCLIP_SIBLINGS ) + msStyle |= WS_CLIPSIBLINGS; if ( m_windowStyle & wxSL_LABELS ) { - msStyle = WS_CHILD | WS_VISIBLE | WS_BORDER | SS_CENTER; + msStyle |= WS_CHILD | WS_VISIBLE | WS_BORDER | SS_CENTER; bool want3D; WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; - m_staticValue = (WXHWND) CreateWindowEx(exStyle, T("STATIC"), NULL, + m_staticValue = (WXHWND) CreateWindowEx(exStyle, wxT("STATIC"), NULL, msStyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), wxGetInstance(), NULL); // Now create min static control - wxSprintf(wxBuffer, T("%d"), minValue); - m_staticMin = (WXHWND) CreateWindowEx(0, T("STATIC"), wxBuffer, - STATIC_FLAGS, + wxSprintf(wxBuffer, wxT("%d"), minValue); + wstyle = STATIC_FLAGS; + if ( m_windowStyle & wxCLIP_SIBLINGS ) + msStyle |= WS_CLIPSIBLINGS; + m_staticMin = (WXHWND) CreateWindowEx(0, wxT("STATIC"), wxBuffer, + wstyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), wxGetInstance(), NULL); } msStyle = 0; + + if ( m_windowStyle & wxCLIP_SIBLINGS ) + msStyle |= WS_CLIPSIBLINGS; + if (m_windowStyle & wxSL_VERTICAL) msStyle = TBS_VERT | WS_CHILD | WS_VISIBLE | WS_TABSTOP ; else @@ -149,16 +162,19 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, SubclassWin(GetHWND()); - SetWindowText((HWND) m_hWnd, T("")); + SetWindowText((HWND) m_hWnd, wxT("")); SetFont(parent->GetFont()); if ( m_windowStyle & wxSL_LABELS ) { // Finally, create max value static item - wxSprintf(wxBuffer, T("%d"), maxValue); - m_staticMax = (WXHWND) CreateWindowEx(0, T("STATIC"), wxBuffer, - STATIC_FLAGS, + wxSprintf(wxBuffer, wxT("%d"), maxValue); + wstyle = STATIC_FLAGS; + if ( m_windowStyle & wxCLIP_SIBLINGS ) + msStyle |= WS_CLIPSIBLINGS; + m_staticMax = (WXHWND) CreateWindowEx(0, wxT("STATIC"), wxBuffer, + wstyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), wxGetInstance(), NULL); @@ -187,62 +203,43 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, } bool wxSlider95::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, - WXWORD pos, WXHWND control) + WXWORD WXUNUSED(pos), WXHWND control) { - int position = 0; // Dummy - not used in this mode - - int nScrollInc; - wxEventType scrollEvent = wxEVT_NULL; + wxEventType scrollEvent; switch ( wParam ) { case SB_TOP: - nScrollInc = m_rangeMax - position; scrollEvent = wxEVT_SCROLL_TOP; break; case SB_BOTTOM: - nScrollInc = - position; scrollEvent = wxEVT_SCROLL_BOTTOM; break; case SB_LINEUP: - nScrollInc = - GetLineSize(); scrollEvent = wxEVT_SCROLL_LINEUP; break; case SB_LINEDOWN: - nScrollInc = GetLineSize(); scrollEvent = wxEVT_SCROLL_LINEDOWN; break; case SB_PAGEUP: - nScrollInc = -GetPageSize(); scrollEvent = wxEVT_SCROLL_PAGEUP; break; case SB_PAGEDOWN: - nScrollInc = GetPageSize(); scrollEvent = wxEVT_SCROLL_PAGEDOWN; break; case SB_THUMBTRACK: case SB_THUMBPOSITION: -#ifdef __WIN32__ - nScrollInc = (signed short)pos - position; -#else // Win16 - nScrollInc = pos - position; -#endif // Win32/16 scrollEvent = wxEVT_SCROLL_THUMBTRACK; break; default: - nScrollInc = 0; - } - - if ( nScrollInc == 0 ) - { - // no event... - return FALSE; + // unknown scroll event? + return FALSE; } int newPos = (int)::SendMessage((HWND) control, TBM_GETPOS, 0, 0); @@ -260,6 +257,7 @@ bool wxSlider95::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, GetEventHandler()->ProcessEvent(event); wxCommandEvent cevent( wxEVT_COMMAND_SLIDER_UPDATED, GetId() ); + cevent.SetInt( newPos ); cevent.SetEventObject( this ); return GetEventHandler()->ProcessEvent( cevent ); @@ -285,7 +283,7 @@ void wxSlider95::SetValue(int value) ::SendMessage(GetHwnd(), TBM_SETPOS, (WPARAM)TRUE, (LPARAM)value); if (m_staticValue) { - wxSprintf(wxBuffer, T("%d"), value); + wxSprintf(wxBuffer, wxT("%d"), value); SetWindowText((HWND) m_staticValue, wxBuffer); } } @@ -355,9 +353,9 @@ void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) int currentX, currentY; GetPosition(¤tX, ¤tY); - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) + if (x == -1 && !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) + if (y == -1 && !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) y1 = currentY; AdjustForParentClientOrigin(x1, y1, sizeFlags); @@ -513,13 +511,13 @@ void wxSlider95::SetRange(int minValue, int maxValue) wxChar buf[40]; if ( m_staticMin ) { - wxSprintf(buf, T("%d"), m_rangeMin); + wxSprintf(buf, wxT("%d"), m_rangeMin); SetWindowText((HWND) m_staticMin, buf); } if ( m_staticMax ) { - wxSprintf(buf, T("%d"), m_rangeMax); + wxSprintf(buf, wxT("%d"), m_rangeMax); SetWindowText((HWND) m_staticMax, buf); } } @@ -531,16 +529,7 @@ WXHBRUSH wxSlider95::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, return 0; // Otherwise, it's a static - if (GetParent()->GetTransparentBackground()) - SetBkMode((HDC) pDC, TRANSPARENT); - else - SetBkMode((HDC) pDC, OPAQUE); - - ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - - wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID); - return (WXHBRUSH) backgroundBrush->GetResourceHandle(); + return wxControl::OnCtlColor(pDC, pWnd, nCtlColor, message, wParam, lParam); } // For trackbars only @@ -645,3 +634,4 @@ bool wxSlider95::Show(bool show) #endif // __WIN95__ +#endif // wxUSE_SLIDER