From: Vadim Zeitlin Date: Sun, 19 Dec 2004 21:30:00 +0000 (+0000) Subject: Win16 version is not used any longer X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/733f45ceb697d6d1f9eaece7bda9b926ea9ba59a Win16 version is not used any longer git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31075 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/msw/slidrmsw.cpp b/src/msw/slidrmsw.cpp deleted file mode 100644 index 45879e284c..0000000000 --- a/src/msw/slidrmsw.cpp +++ /dev/null @@ -1,545 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slidermsw.cpp -// Purpose: wxSliderMSW -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "slidrmsw.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include "wx/utils.h" -#include "wx/brush.h" -#include "wx/msw/slidrmsw.h" -#include "wx/msw/private.h" - -IMPLEMENT_DYNAMIC_CLASS(wxSliderMSW, wxControl) - -// Slider -wxSliderMSW::wxSliderMSW() -{ - m_staticValue = 0; - m_staticMin = 0; - m_staticMax = 0; - m_pageSize = 1; - m_lineSize = 1; - m_rangeMax = 0; - m_rangeMin = 0; -} - -bool wxSliderMSW::Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - if ( (style & wxBORDER_MASK) == wxBORDER_DEFAULT ) - style |= wxBORDER_NONE; - - SetName(name); -#if wxUSE_VALIDATORS - SetValidator(validator); -#endif // wxUSE_VALIDATORS - - if (parent) parent->AddChild(this); - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - - m_staticValue = 0; - m_staticMin = 0; - m_staticMax = 0; - m_pageSize = 1; - m_lineSize = 1; - m_windowStyle = style; - - if ( id == wxID_ANY ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - // non-Win95 implementation - - long msStyle = SS_CENTER; - - WXDWORD exStyle = 0; - msStyle |= MSWGetStyle(GetWindowStyle(), & exStyle) ; - - 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 - wxString buf; - buf.Printf(wxT("%d"), minValue); - DWORD wstyle = STATIC_FLAGS; - if ( m_windowStyle & wxCLIP_SIBLINGS ) - wstyle |= WS_CLIPSIBLINGS; - m_staticMin = (WXHWND) CreateWindowEx(0, wxT("STATIC"), buf, - wstyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), - wxGetInstance(), NULL); - - msStyle = 0; - if (m_windowStyle & wxSL_VERTICAL) - msStyle = SBS_VERT | WS_CHILD | WS_VISIBLE | WS_TABSTOP ; - else - msStyle = SBS_HORZ | WS_CHILD | WS_VISIBLE | WS_TABSTOP ; - - HWND scroll_bar = CreateWindowEx(exStyle, wxT("SCROLLBAR"), wxEmptyString, - msStyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - - m_pageSize = (int)((maxValue-minValue)/10); - m_rangeMax = maxValue; - m_rangeMin = minValue; - - ::SetScrollRange(scroll_bar, SB_CTL, minValue, maxValue, FALSE); - ::SetScrollPos(scroll_bar, SB_CTL, value, FALSE); - ShowWindow(scroll_bar, SW_SHOW); - - m_hWnd = (WXHWND)scroll_bar; - - // Subclass again for purposes of dialog editing mode - SubclassWin(GetHWND()); - - // Finally, create max value static item - buf.Printf(wxT("%d"), maxValue); - wstyle = STATIC_FLAGS; - if ( m_windowStyle & wxCLIP_SIBLINGS ) - wstyle |= WS_CLIPSIBLINGS; - m_staticMax = (WXHWND) CreateWindowEx(0, wxT("STATIC"), buf, - wstyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), - wxGetInstance(), NULL); - - SetFont(parent->GetFont()); - - if (GetFont().Ok()) - { -// GetFont()->RealizeResource(); - 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, - (WPARAM)GetFont().GetResourceHandle(),0L); - if (m_staticValue) - SendMessage((HWND)m_staticValue,WM_SETFONT, - (WPARAM)GetFont().GetResourceHandle(),0L); - } - } - - SetSize(x, y, width, height); - SetValue(value); - - return true; -} - -bool wxSliderMSW::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, - WXWORD pos, WXHWND control) -{ - int position = ::GetScrollPos((HWND)control, SB_CTL); - - int nScrollInc; - 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: -#ifdef __WIN32__ - nScrollInc = (signed short)pos - position; -#else - nScrollInc = pos - position; -#endif - scrollEvent = wxEVT_SCROLL_THUMBTRACK; - break; - - default: - nScrollInc = 0; - } - - if (nScrollInc == 0) - { - // no event... - return false; - } - - int newPos = position + nScrollInc; - - if ( (newPos < GetMin()) || (newPos > GetMax()) ) - { - // out of range - but we did process it - return true; - } - - SetValue(newPos); - - wxScrollEvent event(scrollEvent, m_windowId); - event.SetPosition(newPos); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - - wxCommandEvent cevent( wxEVT_COMMAND_SLIDER_UPDATED, GetId() ); - cevent.SetInt( newPos ); - cevent.SetEventObject( this ); - - return GetEventHandler()->ProcessEvent( cevent ); -} - -wxSliderMSW::~wxSliderMSW() -{ - if (m_staticMin) - DestroyWindow((HWND) m_staticMin); - if (m_staticMax) - DestroyWindow((HWND) m_staticMax); - if (m_staticValue) - DestroyWindow((HWND) m_staticValue); -} - -int wxSliderMSW::GetValue() const -{ - return ::GetScrollPos(GetHwnd(), SB_CTL); -} - -void wxSliderMSW::SetValue(int value) -{ - ::SetScrollPos(GetHwnd(), SB_CTL, value, TRUE); - if (m_staticValue) - { - wxString buf; - buf.Printf(wxT("%d"), value); - SetWindowText((HWND) m_staticValue, buf); - } -} - -void wxSliderMSW::GetSize(int *width, int *height) const -{ - RECT rect; - rect.left = -1; rect.right = -1; rect.top = -1; rect.bottom = -1; - - wxFindMaxSize(GetHWND(), &rect); - - if (m_staticMin) - wxFindMaxSize(m_staticMin, &rect); - if (m_staticMax) - wxFindMaxSize(m_staticMax, &rect); - if (m_staticValue) - wxFindMaxSize(m_staticValue, &rect); - - *width = rect.right - rect.left; - *height = rect.bottom - rect.top; -} - -void wxSliderMSW::GetPosition(int *x, int *y) const -{ - wxWindow *parent = GetParent(); - RECT rect; - rect.left = -1; rect.right = -1; rect.top = -1; rect.bottom = -1; - - wxFindMaxSize(GetHWND(), &rect); - - if (m_staticMin) - wxFindMaxSize(m_staticMin, &rect); - if (m_staticMax) - wxFindMaxSize(m_staticMax, &rect); - if (m_staticValue) - wxFindMaxSize(m_staticValue, &rect); - - // Since we now have the absolute screen coords, - // if there's a parent we must subtract its top left corner - POINT point; - point.x = rect.left; - point.y = rect.top; - if (parent) - ::ScreenToClient((HWND) parent->GetHWND(), &point); - - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - if (GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - point.x -= pt.x; - point.y -= pt.y; - } - *x = point.x; - *y = point.y; -} - -// TODO one day, make sense of all this horros and replace it with a readable -// DoGetBestSize() -void wxSliderMSW::DoSetSize(int x, int y, int width, int height, int sizeFlags) -{ - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - int currentX, currentY; - GetPosition(¤tX, ¤tY); - if (x == wxDefaultCoord && !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == wxDefaultCoord && !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - wxChar buf[300]; - - int x_offset = x; - int y_offset = y; - - int cx; // slider,min,max sizes - int cy; - int cyf; - - wxGetCharSize(GetHWND(), &cx, &cy, this->GetFont()); - - if ((m_windowStyle & wxSL_VERTICAL) != wxSL_VERTICAL) - { - if ( m_windowStyle & wxSL_LABELS ) - { - int min_len = 0; - - GetWindowText((HWND) m_staticMin, buf, 300); - GetTextExtent(buf, &min_len, &cyf,NULL,NULL, & this->GetFont()); - - int max_len = 0; - - GetWindowText((HWND) m_staticMax, buf, 300); - GetTextExtent(buf, &max_len, &cyf,NULL,NULL, & this->GetFont()); - if (m_staticValue) - { - int new_width = (int)(wxMax(min_len, max_len)); - 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 - ::MoveWindow((HWND) m_staticValue, x_offset, y_offset, new_width, valueHeight, TRUE); - x_offset += new_width + cx; - } - - ::MoveWindow((HWND) m_staticMin, x_offset, y_offset, (int)min_len, cy, TRUE); - x_offset += (int)(min_len + cx); - - int slider_length = (int)(w1 - x_offset - max_len - cx); - - int slider_height = cy; - - // Slider must have a minimum/default length/height - if (slider_length < 100) - slider_length = 100; - - ::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 ( w1 < 0 ) - w1 = 200; - if ( h1 < 0 ) - h1 = 20; - ::MoveWindow(GetHwnd(), x1, y1, w1, h1, TRUE); - } - } - else - { - if ( m_windowStyle & wxSL_LABELS ) - { - int min_len; - GetWindowText((HWND) m_staticMin, buf, 300); - GetTextExtent(buf, &min_len, &cyf,NULL,NULL,& this->GetFont()); - - int max_len; - GetWindowText((HWND) m_staticMax, buf, 300); - GetTextExtent(buf, &max_len, &cyf,NULL,NULL, & this->GetFont()); - - if (m_staticValue) - { - int new_width = (int)(wxMax(min_len, max_len)); - int valueHeight = (int)cyf; -/*** Suggested change by George Tasker - remove this block... -#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 - ... and replace with following line: */ - new_width += cx; - - ::MoveWindow((HWND) m_staticValue, x_offset, y_offset, new_width, valueHeight, TRUE); - y_offset += valueHeight; - } - - ::MoveWindow((HWND) m_staticMin, x_offset, y_offset, (int)min_len, cy, TRUE); - y_offset += cy; - - int slider_length = (int)(h1 - y_offset - cy - cy); - - // Use character height as an estimate of slider width (yes, width) - int slider_width = cy; - - // Slider must have a minimum/default length - if (slider_length < 100) - slider_length = 100; - - ::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 ( w1 < 0 ) - w1 = 20; - if ( h1 < 0 ) - h1 = 200; - ::MoveWindow(GetHwnd(), x1, y1, w1, h1, TRUE); - } - } -} - -void wxSliderMSW::SetRange(int minValue, int maxValue) -{ - m_rangeMin = minValue; - m_rangeMax = maxValue; - - ::SetScrollRange(GetHwnd(), SB_CTL, m_rangeMin, m_rangeMax, TRUE); - wxChar buf[40]; - if ( m_staticMin ) - { - wxSprintf(buf, wxT("%d"), m_rangeMin); - SetWindowText((HWND) m_staticMin, buf); - } - - if ( m_staticMax ) - { - wxSprintf(buf, wxT("%d"), m_rangeMax); - SetWindowText((HWND) m_staticMax, buf); - } -} - -void wxSliderMSW::SetPageSize(int pageSize) -{ - m_pageSize = pageSize; -} - -int wxSliderMSW::GetPageSize() const -{ - return m_pageSize; -} - -void wxSliderMSW::SetLineSize(int lineSize) -{ - m_lineSize = lineSize; -} - -int wxSliderMSW::GetLineSize() const -{ - return m_lineSize; -} - -// Not yet implemented -void wxSliderMSW::SetThumbLength(int WXUNUSED(lenPixels)) -{ -} - -// Not yet implemented -int wxSliderMSW::GetThumbLength() const -{ - return 0; -} - -bool wxSliderMSW::ContainsHWND(WXHWND hWnd) const -{ - return ( hWnd == GetStaticMin() || hWnd == GetStaticMax() || hWnd == GetEditValue() ); -} - -void wxSliderMSW::Command (wxCommandEvent & event) -{ - SetValue (event.GetInt()); - ProcessCommand (event); -} - -bool wxSliderMSW::Show(bool show) -{ - wxWindow::Show(show); - - int cshow; - if (show) - cshow = SW_SHOW; - else - cshow = SW_HIDE; - - if(m_staticValue) - ShowWindow((HWND) m_staticValue, (BOOL)cshow); - if(m_staticMin) - ShowWindow((HWND) m_staticMin, (BOOL)cshow); - if(m_staticMax) - ShowWindow((HWND) m_staticMax, (BOOL)cshow); - return true; -} - -