X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/837e57436a89516a5fa9f478f401e06bd872c17c..10992a81d39da31b79063387b7b71c0ff68737ce:/src/msw/slider95.cpp diff --git a/src/msw/slider95.cpp b/src/msw/slider95.cpp index 7bfe7c1a79..77cf291c9f 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__ @@ -22,8 +22,8 @@ #ifndef WX_PRECOMP #include -#include -#include +#include "wx/utils.h" +#include "wx/brush.h" #endif #ifdef __WIN95__ @@ -31,13 +31,11 @@ #include "wx/msw/slider95.h" #include "wx/msw/private.h" -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) -#include +#if defined(__WIN95__) && !(defined(__GNUWIN32_OLD__) || defined(__TWIN32__)) + #include #endif -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxSlider95, wxControl) -#endif // Slider wxSlider95::wxSlider95() @@ -60,7 +58,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()) ; @@ -93,14 +93,14 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, 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, + wxSprintf(wxBuffer, wxT("%d"), minValue); + m_staticMin = (WXHWND) CreateWindowEx(0, wxT("STATIC"), wxBuffer, STATIC_FLAGS, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), wxGetInstance(), NULL); @@ -149,15 +149,15 @@ 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, + wxSprintf(wxBuffer, wxT("%d"), maxValue); + m_staticMax = (WXHWND) CreateWindowEx(0, wxT("STATIC"), wxBuffer, STATIC_FLAGS, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), wxGetInstance(), NULL); @@ -239,7 +239,7 @@ bool wxSlider95::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, nScrollInc = 0; } - if ( nScrollInc == 0 ) + if (scrollEvent == wxEVT_NULL) { // no event... return FALSE; @@ -260,6 +260,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 ); @@ -277,15 +278,15 @@ wxSlider95::~wxSlider95() int wxSlider95::GetValue() const { - return ::SendMessage((HWND) GetHWND(), TBM_GETPOS, 0, 0); + return ::SendMessage(GetHwnd(), TBM_GETPOS, 0, 0); } void wxSlider95::SetValue(int value) { - ::SendMessage((HWND) GetHWND(), TBM_SETPOS, (WPARAM)TRUE, (LPARAM)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); } } @@ -344,6 +345,8 @@ void wxSlider95::GetPosition(int *x, int *y) const *y = point.y; } +// TODO one day, make sense of all this horros and replace it with a readable +// DoGetBestSize() void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) { int x1 = x; @@ -353,9 +356,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); @@ -413,7 +416,7 @@ void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) if (slider_length < 100) slider_length = 100; - MoveWindow((HWND) GetHWND(), x_offset, y_offset, slider_length, slider_height, TRUE); + MoveWindow(GetHwnd(), x_offset, y_offset, slider_length, slider_height, TRUE); x_offset += slider_length + cx; MoveWindow((HWND) m_staticMax, x_offset, y_offset, (int)max_len, cy, TRUE); @@ -430,7 +433,7 @@ void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) w1 = 200; if ( h1 < 0 ) h1 = 20; - MoveWindow((HWND) GetHWND(), x1, y1, w1, h1, TRUE); + MoveWindow(GetHwnd(), x1, y1, w1, h1, TRUE); } } else @@ -479,7 +482,7 @@ void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) if (slider_length < 100) slider_length = 100; - MoveWindow((HWND) GetHWND(), x_offset, y_offset, slider_width, slider_length, TRUE); + MoveWindow(GetHwnd(), x_offset, y_offset, slider_width, slider_length, TRUE); y_offset += slider_length; MoveWindow((HWND) m_staticMax, x_offset, y_offset, (int)max_len, cy, TRUE); @@ -496,7 +499,7 @@ void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) w1 = 20; if ( h1 < 0 ) h1 = 200; - MoveWindow((HWND) GetHWND(), x1, y1, w1, h1, TRUE); + MoveWindow(GetHwnd(), x1, y1, w1, h1, TRUE); } } } @@ -506,18 +509,18 @@ void wxSlider95::SetRange(int minValue, int maxValue) m_rangeMin = minValue; m_rangeMax = maxValue; - ::SendMessage((HWND) GetHWND(), TBM_SETRANGE, TRUE, MAKELONG(minValue, maxValue)); + ::SendMessage(GetHwnd(), TBM_SETRANGE, TRUE, MAKELONG(minValue, 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); } } @@ -529,28 +532,19 @@ 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 void wxSlider95::SetTickFreq(int n, int pos) { m_tickFreq = n; - ::SendMessage( (HWND) GetHWND(), TBM_SETTICFREQ, (WPARAM) n, (LPARAM) pos ); + ::SendMessage( GetHwnd(), TBM_SETTICFREQ, (WPARAM) n, (LPARAM) pos ); } void wxSlider95::SetPageSize(int pageSize) { - ::SendMessage( (HWND) GetHWND(), TBM_SETPAGESIZE, (WPARAM) 0, (LPARAM) pageSize ); + ::SendMessage( GetHwnd(), TBM_SETPAGESIZE, (WPARAM) 0, (LPARAM) pageSize ); m_pageSize = pageSize; } @@ -561,53 +555,53 @@ int wxSlider95::GetPageSize() const void wxSlider95::ClearSel() { - ::SendMessage( (HWND) GetHWND(), TBM_CLEARSEL, (WPARAM) TRUE, (LPARAM) 0 ); + ::SendMessage( GetHwnd(), TBM_CLEARSEL, (WPARAM) TRUE, (LPARAM) 0 ); } void wxSlider95::ClearTicks() { - ::SendMessage( (HWND) GetHWND(), TBM_CLEARTICS, (WPARAM) TRUE, (LPARAM) 0 ); + ::SendMessage( GetHwnd(), TBM_CLEARTICS, (WPARAM) TRUE, (LPARAM) 0 ); } void wxSlider95::SetLineSize(int lineSize) { m_lineSize = lineSize; - ::SendMessage( (HWND) GetHWND(), TBM_SETLINESIZE, (WPARAM) 0, (LPARAM) lineSize ); + ::SendMessage( GetHwnd(), TBM_SETLINESIZE, (WPARAM) 0, (LPARAM) lineSize ); } int wxSlider95::GetLineSize() const { - return (int) ::SendMessage( (HWND) GetHWND(), TBM_GETLINESIZE, (WPARAM) 0, (LPARAM) 0 ); + return (int) ::SendMessage( GetHwnd(), TBM_GETLINESIZE, (WPARAM) 0, (LPARAM) 0 ); } int wxSlider95::GetSelEnd() const { - return (int) ::SendMessage( (HWND) GetHWND(), TBM_SETSELEND, (WPARAM) 0, (LPARAM) 0 ); + return (int) ::SendMessage( GetHwnd(), TBM_SETSELEND, (WPARAM) 0, (LPARAM) 0 ); } int wxSlider95::GetSelStart() const { - return (int) ::SendMessage( (HWND) GetHWND(), TBM_GETSELSTART, (WPARAM) 0, (LPARAM) 0 ); + return (int) ::SendMessage( GetHwnd(), TBM_GETSELSTART, (WPARAM) 0, (LPARAM) 0 ); } void wxSlider95::SetSelection(int minPos, int maxPos) { - ::SendMessage( (HWND) GetHWND(), TBM_SETSEL, (WPARAM) TRUE, (LPARAM) MAKELONG( minPos, maxPos) ); + ::SendMessage( GetHwnd(), TBM_SETSEL, (WPARAM) TRUE, (LPARAM) MAKELONG( minPos, maxPos) ); } void wxSlider95::SetThumbLength(int len) { - ::SendMessage( (HWND) GetHWND(), TBM_SETTHUMBLENGTH, (WPARAM) len, (LPARAM) 0 ); + ::SendMessage( GetHwnd(), TBM_SETTHUMBLENGTH, (WPARAM) len, (LPARAM) 0 ); } int wxSlider95::GetThumbLength() const { - return (int) ::SendMessage( (HWND) GetHWND(), TBM_GETTHUMBLENGTH, (WPARAM) 0, (LPARAM) 0 ); + return (int) ::SendMessage( GetHwnd(), TBM_GETTHUMBLENGTH, (WPARAM) 0, (LPARAM) 0 ); } void wxSlider95::SetTick(int tickPos) { - ::SendMessage( (HWND) GetHWND(), TBM_SETTIC, (WPARAM) 0, (LPARAM) tickPos ); + ::SendMessage( GetHwnd(), TBM_SETTIC, (WPARAM) 0, (LPARAM) tickPos ); } bool wxSlider95::ContainsHWND(WXHWND hWnd) const