X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bfc6fde4b1dd5bfd8ae22839ff9a69cf24eb9120..8e00741dbdf74ee5583ea8b0134f01023c8f2480:/src/msw/slider95.cpp diff --git a/src/msw/slider95.cpp b/src/msw/slider95.cpp index d7a322184a..bc9805ff4d 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__ @@ -31,7 +31,7 @@ #include "wx/msw/slider95.h" #include "wx/msw/private.h" -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) +#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) || defined(wxUSE_NORLANDER_HEADERS) #include #endif @@ -75,9 +75,9 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, m_tickFreq = 0; if ( id == -1 ) - m_windowId = (int)NewControlId(); + m_windowId = (int)NewControlId(); else - m_windowId = id; + m_windowId = id; int x = pos.x; int y = pos.y; @@ -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, "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 - sprintf(wxBuffer, "%d", minValue); - m_staticMin = (WXHWND) CreateWindowEx(0, "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); @@ -113,23 +113,23 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, msStyle = TBS_HORZ | WS_CHILD | WS_VISIBLE | WS_TABSTOP ; if ( m_windowStyle & wxSL_AUTOTICKS ) - msStyle |= TBS_AUTOTICKS ; + msStyle |= TBS_AUTOTICKS ; if ( m_windowStyle & wxSL_LEFT ) - msStyle |= TBS_LEFT; + msStyle |= TBS_LEFT; else if ( m_windowStyle & wxSL_RIGHT ) - msStyle |= TBS_RIGHT; + msStyle |= TBS_RIGHT; else if ( m_windowStyle & wxSL_TOP ) - msStyle |= TBS_TOP; + msStyle |= TBS_TOP; else if ( m_windowStyle & wxSL_BOTTOM ) - msStyle |= TBS_BOTTOM; + msStyle |= TBS_BOTTOM; else if ( m_windowStyle & wxSL_BOTH ) - msStyle |= TBS_BOTH; + msStyle |= TBS_BOTH; else if ( ! (m_windowStyle & wxSL_AUTOTICKS) ) - msStyle |= TBS_NOTICKS; + msStyle |= TBS_NOTICKS; if ( m_windowStyle & wxSL_SELRANGE ) - msStyle |= TBS_ENABLESELRANGE ; + msStyle |= TBS_ENABLESELRANGE ; HWND scroll_bar = CreateWindowEx(MakeExtendedStyle(m_windowStyle), TRACKBAR_CLASS, wxBuffer, msStyle, @@ -149,15 +149,15 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, SubclassWin(GetHWND()); - SetWindowText((HWND) m_hWnd, ""); + SetWindowText((HWND) m_hWnd, wxT("")); SetFont(parent->GetFont()); if ( m_windowStyle & wxSL_LABELS ) { // Finally, create max value static item - sprintf(wxBuffer, "%d", maxValue); - m_staticMax = (WXHWND) CreateWindowEx(0, "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); @@ -167,14 +167,14 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, { if (GetFont().GetResourceHandle()) { - if ( m_staticMin ) - SendMessage((HWND)m_staticMin,WM_SETFONT, - (WPARAM)GetFont().GetResourceHandle(),0L); - if ( m_staticMax ) - SendMessage((HWND)m_staticMax,WM_SETFONT, + if ( m_staticMin ) + SendMessage((HWND)m_staticMin,WM_SETFONT, + (WPARAM)GetFont().GetResourceHandle(),0L); + if ( m_staticMax ) + SendMessage((HWND)m_staticMax,WM_SETFONT, (WPARAM)GetFont().GetResourceHandle(),0L); - if (m_staticValue) - SendMessage((HWND)m_staticValue,WM_SETFONT, + if (m_staticValue) + SendMessage((HWND)m_staticValue,WM_SETFONT, (WPARAM)GetFont().GetResourceHandle(),0L); } } @@ -186,7 +186,8 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, return TRUE; } -void wxSlider95::MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control) +bool wxSlider95::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, + WXWORD pos, WXHWND control) { int position = 0; // Dummy - not used in this mode @@ -194,74 +195,74 @@ void wxSlider95::MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control) wxEventType scrollEvent = wxEVT_NULL; 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: + 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 - nScrollInc = pos - position; -#endif - scrollEvent = wxEVT_SCROLL_THUMBTRACK; - break; + nScrollInc = (signed short)pos - position; +#else // Win16 + nScrollInc = pos - position; +#endif // Win32/16 + scrollEvent = wxEVT_SCROLL_THUMBTRACK; + break; + + default: + nScrollInc = 0; + } - default: - nScrollInc = 0; - return; + if ( nScrollInc == 0 ) + { + // no event... + return FALSE; } + int newPos = (int)::SendMessage((HWND) control, TBM_GETPOS, 0, 0); + if ( (newPos < GetMin()) || (newPos > GetMax()) ) { + // out of range - but we did process it + return TRUE; + } - int newPos = (int)::SendMessage((HWND) control, TBM_GETPOS, 0, 0); - if (!(newPos < GetMin() || newPos > GetMax())) - { - SetValue(newPos); + SetValue(newPos); - wxScrollEvent event(scrollEvent, m_windowId); - event.SetPosition(newPos); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); + wxScrollEvent event(scrollEvent, m_windowId); + event.SetPosition(newPos); + event.SetEventObject( this ); + GetEventHandler()->ProcessEvent(event); - wxCommandEvent cevent( wxEVT_COMMAND_SLIDER_UPDATED, GetId() ); - cevent.SetEventObject( this ); - GetEventHandler()->ProcessEvent( cevent ); + wxCommandEvent cevent( wxEVT_COMMAND_SLIDER_UPDATED, GetId() ); + cevent.SetEventObject( this ); - } - } -} - -void wxSlider95::MSWOnHScroll(WXWORD wParam, WXWORD pos, WXHWND control) -{ - MSWOnVScroll(wParam, pos, control); + return GetEventHandler()->ProcessEvent( cevent ); } wxSlider95::~wxSlider95() @@ -276,15 +277,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) { - sprintf(wxBuffer, "%d", value); + wxSprintf(wxBuffer, wxT("%d"), value); SetWindowText((HWND) m_staticValue, wxBuffer); } } @@ -343,6 +344,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; @@ -359,7 +362,7 @@ void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) AdjustForParentClientOrigin(x1, y1, sizeFlags); - char buf[300]; + wxChar buf[300]; int x_offset = x; int y_offset = y; @@ -372,8 +375,8 @@ void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) if ((m_windowStyle & wxSL_VERTICAL) != wxSL_VERTICAL) { - if ( m_windowStyle & wxSL_LABELS ) - { + if ( m_windowStyle & wxSL_LABELS ) + { int min_len = 0; GetWindowText((HWND) m_staticMin, buf, 300); @@ -386,15 +389,15 @@ void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) if (m_staticValue) { int new_width = (int)(wxMax(min_len, max_len)); - int valueHeight = (int)cyf; + int valueHeight = (int)cyf; #ifdef __WIN32__ // For some reason, under Win95, the text edit control has // a lot of space before the first character new_width += 3*cx; #endif // The height needs to be a bit bigger under Win95 if using native - // 3D effects. - valueHeight = (int) (valueHeight * 1.5) ; + // 3D effects. + valueHeight = (int) (valueHeight * 1.5) ; MoveWindow((HWND) m_staticValue, x_offset, y_offset, new_width, valueHeight, TRUE); x_offset += new_width + cx; } @@ -405,37 +408,37 @@ void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) int slider_length = (int)(w1 - x_offset - max_len - cx); int slider_height = h1; - if (slider_height < 0 ) - slider_height = 20; + if (slider_height < 0 ) + slider_height = 20; // Slider must have a minimum/default length/height 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); } - else - { - // No labels - // If we're prepared to use the existing size, then... - if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) - { - GetSize(&w1, &h1); - } - if ( w1 < 0 ) - w1 = 200; - if ( h1 < 0 ) - h1 = 20; - MoveWindow((HWND) GetHWND(), x1, y1, w1, h1, TRUE); - } + else + { + // No labels + // If we're prepared to use the existing size, then... + if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) + { + GetSize(&w1, &h1); + } + if ( w1 < 0 ) + w1 = 200; + if ( h1 < 0 ) + h1 = 20; + MoveWindow(GetHwnd(), x1, y1, w1, h1, TRUE); + } } else { - if ( m_windowStyle & wxSL_LABELS ) - { + if ( m_windowStyle & wxSL_LABELS ) + { int min_len; GetWindowText((HWND) m_staticMin, buf, 300); GetTextExtent(buf, &min_len, &cyf,NULL,NULL, & this->GetFont()); @@ -447,7 +450,7 @@ void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) if (m_staticValue) { int new_width = (int)(wxMax(min_len, max_len)); - int valueHeight = (int)cyf; + int valueHeight = (int)cyf; /*** Suggested change by George Tasker - remove this block... #ifdef __WIN32__ // For some reason, under Win95, the text edit control has @@ -458,8 +461,8 @@ void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) new_width += cx; // The height needs to be a bit bigger under Win95 if using native - // 3D effects. - valueHeight = (int) (valueHeight * 1.5) ; + // 3D effects. + valueHeight = (int) (valueHeight * 1.5) ; MoveWindow((HWND) m_staticValue, x_offset, y_offset, new_width, valueHeight, TRUE); y_offset += valueHeight; @@ -471,32 +474,32 @@ void wxSlider95::DoSetSize(int x, int y, int width, int height, int sizeFlags) int slider_length = (int)(h1 - y_offset - cy - cy); int slider_width = w1; - if (slider_width < 0 ) - slider_width = 20; + if (slider_width < 0 ) + slider_width = 20; // Slider must have a minimum/default length 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); } - else - { - // No labels - // If we're prepared to use the existing size, then... - if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) - { - GetSize(&w1, &h1); - } - if ( w1 < 0 ) - w1 = 20; - if ( h1 < 0 ) - h1 = 200; - MoveWindow((HWND) GetHWND(), x1, y1, w1, h1, TRUE); - } + else + { + // No labels + // If we're prepared to use the existing size, then... + if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) + { + GetSize(&w1, &h1); + } + if ( w1 < 0 ) + w1 = 20; + if ( h1 < 0 ) + h1 = 200; + MoveWindow(GetHwnd(), x1, y1, w1, h1, TRUE); + } } } @@ -505,27 +508,27 @@ 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)); - char buf[40]; + wxChar buf[40]; if ( m_staticMin ) { - sprintf(buf, "%d", m_rangeMin); - SetWindowText((HWND) m_staticMin, buf); + wxSprintf(buf, wxT("%d"), m_rangeMin); + SetWindowText((HWND) m_staticMin, buf); } if ( m_staticMax ) { - sprintf(buf, "%d", m_rangeMax); + wxSprintf(buf, wxT("%d"), m_rangeMax); SetWindowText((HWND) m_staticMax, buf); } } WXHBRUSH wxSlider95::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) + WXUINT message, WXWPARAM wParam, WXLPARAM lParam) { if ( nCtlColor == CTLCOLOR_SCROLLBAR ) - return 0; + return 0; // Otherwise, it's a static if (GetParent()->GetTransparentBackground()) @@ -544,12 +547,12 @@ WXHBRUSH wxSlider95::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, 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; } @@ -560,58 +563,58 @@ 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 { - return ( hWnd == GetStaticMin() || hWnd == GetStaticMax() || hWnd == GetEditValue() ); + return ( hWnd == GetStaticMin() || hWnd == GetStaticMax() || hWnd == GetEditValue() ); } void wxSlider95::Command (wxCommandEvent & event) @@ -622,7 +625,7 @@ void wxSlider95::Command (wxCommandEvent & event) bool wxSlider95::Show(bool show) { - wxWindow::Show(show); + wxWindow::Show(show); int cshow; if (show) @@ -631,11 +634,11 @@ bool wxSlider95::Show(bool show) cshow = SW_HIDE; if(m_staticValue) - ShowWindow((HWND) m_staticValue, (BOOL)cshow); + ShowWindow((HWND) m_staticValue, (BOOL)cshow); if(m_staticMin) - ShowWindow((HWND) m_staticMin, (BOOL)cshow); + ShowWindow((HWND) m_staticMin, (BOOL)cshow); if(m_staticMax) - ShowWindow((HWND) m_staticMax, (BOOL)cshow); + ShowWindow((HWND) m_staticMax, (BOOL)cshow); return TRUE; }