X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/70a2c6562fcc7088076ab421419069ef50e4a7d3..76e7cfab8fdb0c7862fd07e427af54181717fc62:/src/os2/slider.cpp?ds=inline diff --git a/src/os2/slider.cpp b/src/os2/slider.cpp index c548169535..5537d730c0 100644 --- a/src/os2/slider.cpp +++ b/src/os2/slider.cpp @@ -1,10 +1,9 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: slider.cpp +// Name: src/os2/slider.cpp // Purpose: wxSlider // Author: David Webster // Modified by: // Created: 10/15/99 -// RCS-ID: $Id$ // Copyright: (c) David Webster // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -17,17 +16,17 @@ #endif #ifndef WX_PRECOMP -#include -#include -#include -#include + #include + #include "wx/utils.h" + #include "wx/brush.h" + #include "wx/scrolwin.h" #endif +#if wxUSE_SLIDER + #include "wx/slider.h" #include "wx/os2/private.h" -IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl) - wxSlider::wxSlider() { m_hStaticValue = 0L; @@ -50,26 +49,24 @@ wxSlider::~wxSlider() ::WinDestroyWindow((HWND)m_hStaticValue); } // end of wxSlider::~wxSlider -void wxSlider::AdjustSubControls( - int nX -, int nY -, int nWidth -, int nHeight -, int nSizeFlags -) +void wxSlider::AdjustSubControls( int nX, + int nY, + int nWidth, + int nHeight, + int WXUNUSED(nSizeFlags) ) { - SWP vSwp; int nXOffset = nX; int nYOffset = nY; int nCx; // slider,min,max sizes int nCy; int nCyf; - char zBuf[300]; + wxChar zBuf[300]; + wxFont vFont = this->GetFont(); wxGetCharSize( GetHWND() ,&nCx ,&nCy - ,&this->GetFont() + ,&vFont ); if ((m_windowStyle & wxSL_VERTICAL) != wxSL_VERTICAL) @@ -79,11 +76,11 @@ void wxSlider::AdjustSubControls( int nMinLen = 0; int nMaxLen = 0; - ::WinQueryWindowText((HWND)m_hStaticMin, 300, zBuf); - GetTextExtent(zBuf, &nMinLen, &nCyf, NULL, NULL, &this->GetFont()); + ::WinQueryWindowText((HWND)m_hStaticMin, 300, (PSZ)zBuf); + GetTextExtent(zBuf, &nMinLen, &nCyf, NULL, NULL, &vFont); - ::WinQueryWindowText((HWND)m_hStaticMax, 300, zBuf); - GetTextExtent(zBuf, &nMaxLen, &nCyf, NULL, NULL, &this->GetFont()); + ::WinQueryWindowText((HWND)m_hStaticMax, 300, (PSZ)zBuf); + GetTextExtent(zBuf, &nMaxLen, &nCyf, NULL, NULL, &vFont); if (m_hStaticValue) { @@ -104,7 +101,7 @@ void wxSlider::AdjustSubControls( ,(LONG)nXOffset - (nMinLen + nCx) ,(LONG)nYOffset ,(LONG)nMinLen - ,(LONG)nCy + ,(LONG)nCyf ,SWP_SIZE | SWP_MOVE ); nXOffset += nWidth + nCx; @@ -114,7 +111,7 @@ void wxSlider::AdjustSubControls( ,(LONG)nXOffset ,(LONG)nYOffset ,(LONG)nMaxLen - ,(LONG)nCy + ,(LONG)nCyf ,SWP_ZORDER | SWP_SHOW ); } @@ -125,20 +122,20 @@ void wxSlider::AdjustSubControls( // Now deal with a vertical slider // - if (m_lWindowStyle & winSL_LABELS ) + if (m_windowStyle & wxSL_LABELS ) { int nMinLen = 0; int nMaxLen = 0; - ::WinQueryWindowText((HWND)m_hStaticMin, 300, zBuf); - GetTextExtent(zBuf, &lMinLen, &nCyf, NULL, NULL, &this->GetFont()); + ::WinQueryWindowText((HWND)m_hStaticMin, 300, (PSZ)zBuf); + GetTextExtent(zBuf, &nMinLen, &nCyf, NULL, NULL, &vFont); - ::WinQueryWindowText((HWND)m_hStaticMax, 300, zBuf); - GetTextExtent(zBuf, &lMaxLen, &nCyf, NULL, NULL, &this->GetFont()); + ::WinQueryWindowText((HWND)m_hStaticMax, 300, (PSZ)zBuf); + GetTextExtent(zBuf, &nMaxLen, &nCyf, NULL, NULL, &vFont); if (m_hStaticValue) { - int nNewWidth = (DAWUTL_MAX(nMinLen, nMaxLen)); + int nNewWidth = (wxMax(nMinLen, nMaxLen)); ::WinSetWindowPos( (HWND)m_hStaticValue ,HWND_TOP @@ -204,9 +201,7 @@ bool wxSlider::Create( , const wxPoint& rPos , const wxSize& rSize , long lStyle -#if wxUSE_VALIDATORS , const wxValidator& rValidator -#endif , const wxString& rsName ) { @@ -234,7 +229,7 @@ bool wxSlider::Create( m_windowStyle = lStyle; m_nTickFreq = 0; - if (vId == -1) + if (vId == wxID_ANY) m_windowId = (int)NewControlId(); else m_windowId = vId; @@ -261,7 +256,7 @@ bool wxSlider::Create( // // Now create min static control // - sprintf(wxBuffer, "%d", nMinValue); + wxSprintf(wxBuffer, wxT("%d"), nMinValue); lWstyle = SS_TEXT|DT_LEFT|WS_VISIBLE; if (m_windowStyle & wxCLIP_SIBLINGS) lWstyle |= WS_CLIPSIBLINGS; @@ -286,7 +281,7 @@ bool wxSlider::Create( if (m_windowStyle & wxSL_VERTICAL) lMsStyle = SLS_VERTICAL | SLS_HOMEBOTTOM | WS_VISIBLE | WS_TABSTOP; else - lMsStyle = SLS_HORIZONTAL | SLS_HOMELEFT| WS_VISIBLE | WS_TABSTOP; + lMsStyle = SLS_HORIZONTAL | SLS_HOMELEFT | WS_VISIBLE | WS_TABSTOP; if (m_windowStyle & wxCLIP_SIBLINGS) lMsStyle |= WS_CLIPSIBLINGS; @@ -312,20 +307,20 @@ bool wxSlider::Create( lMsStyle |= SLS_RIBBONSTRIP; m_nPageSize = ((nMaxValue - nMinValue)/10); - vSlData.usScale1Increments = m_nPageSize; - vSlData.usScale2Increments = m_nPageSize; - - HWND hScrollBar = ::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle - ,WC_SLIDER // Window class - ,(PSZ)wxBuffer // Initial Text - ,(ULONG)lMsStyle // Style flags - ,0L, 0L, 0L, 0L // Origin -- 0 size - ,(HWND)GetHwndOf(pParent) // owner window handle (same as parent - ,HWND_TOP // initial z position - ,(HMENU)m_windowId // Window identifier - ,&vSlData // Slider control data - ,NULL // no Presentation parameters - ); + vSlData.usScale1Increments = (USHORT)m_nPageSize; + vSlData.usScale2Increments = (USHORT)m_nPageSize; + + HWND hScrollBar = ::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle + ,WC_SLIDER // Window class + ,(PSZ)wxBuffer // Initial Text + ,(ULONG)lMsStyle // Style flags + ,0L, 0L, 0L, 0L // Origin -- 0 size + ,(HWND)GetHwndOf(pParent) // owner window handle (same as parent + ,HWND_BOTTOM // initial z position + ,(HMENU)m_windowId // Window identifier + ,&vSlData // Slider control data + ,NULL // no Presentation parameters + ); m_nRangeMax = nMaxValue; m_nRangeMin = nMinValue; @@ -356,7 +351,7 @@ bool wxSlider::Create( // // Finally, create max value static item // - sprintf(wxBuffer, "%d", nMaxValue); + wxSprintf(wxBuffer, wxT("%d"), nMaxValue); lWstyle = SS_TEXT|DT_LEFT|WS_VISIBLE; if (m_windowStyle & wxCLIP_SIBLINGS) lMsStyle |= WS_CLIPSIBLINGS; @@ -372,7 +367,7 @@ bool wxSlider::Create( ,NULL // no control data ,NULL // no Presentation parameters ); - if (GetFont().Ok()) + if (GetFont().IsOk()) { if (GetFont().GetResourceHandle()) { @@ -392,6 +387,8 @@ bool wxSlider::Create( } } + SetXComp(0); + SetYComp(0); SetSize( nX ,nY ,nWidth @@ -406,11 +403,9 @@ bool wxSlider::Create( ) ) + 4; // for bordersizes - wxColour vColour; + wxColour vColour(*wxBLACK); - vColour.Set(wxString("BLACK")); - - LONG lColor = (LONG)vColour.GetPixel(); + LONG lColor = (LONG)vColour.GetPixel(); ::WinSetPresParam( m_hStaticMin ,PP_FOREGROUNDCOLOR @@ -453,7 +448,7 @@ bool wxSlider::Create( ,sizeof(LONG) ,(PVOID)&lColor ); - vColour.Set(wxString("BLUE")); + vColour.Set(wxString(wxT("BLUE"))); lColor = (LONG)vColour.GetPixel(); ::WinSetPresParam( m_hWnd ,PP_HILITEBACKGROUNDCOLOR @@ -461,30 +456,28 @@ bool wxSlider::Create( ,(PVOID)&lColor ); SetValue(nValue); - delete pTextFont; - return TRUE; + return true; } // end of wxSlider::Create -void wxSlider::DoSetSize( - int nX -, int nY -, int nWidth -, int nHeight -, int nSizeFlags -) +void wxSlider::DoSetSize( int nX, + int nY, + int nWidth, + int nHeight, + int nSizeFlags ) { - int nX1 = nX; - int nY1 = nY; - int nWidth1 = nWidth; - int nHeight1 = nHeight; - int nXOffset = nX; - int nYOffset = nY; - int nCx; // slider,min,max sizes - int nCy; - int nCyf; - int nCurrentX; - int nCurrentY; - char zBuf[300]; + int nX1 = nX; + int nY1 = nY; + int nWidth1 = nWidth; + int nHeight1 = nHeight; + int nXOffset = nX; + int nYOffset = nY; + int nCx; // slider,min,max sizes + int nCy; + int nCyf; + int nCurrentX; + int nCurrentY; + wxChar zBuf[300]; + wxFont vFont = this->GetFont(); // // Adjust for OS/2's reverse coordinate system @@ -495,29 +488,28 @@ void wxSlider::DoSetSize( if (nOS2Height < 0) nOS2Height = 20; + CacheBestSize(wxSize(nWidth,nOS2Height)); if (pParent) { - int nOS2ParentHeight = GetOS2ParentHeight(pParent); + int nOS2ParentHeight = GetOS2ParentHeight(pParent); nYOffset = nOS2ParentHeight - (nYOffset + nOS2Height); - if (nY != -1) + if (nY != wxDefaultCoord) nY1 = nOS2ParentHeight - (nY1 + nOS2Height); } else { - RECTL vRect; + RECTL vRect; ::WinQueryWindowRect(HWND_DESKTOP, &vRect); nYOffset = vRect.yTop - (nYOffset + nOS2Height); - if (nY != -1) + if (nY != wxDefaultCoord) nY1 = vRect.yTop - (nY1 + nOS2Height); } m_nSizeFlags = nSizeFlags; - GetPosition( &nCurrentX - ,&nCurrentY - ); + GetPosition( &nCurrentX, &nCurrentY ); if (nX == -1 && !(nSizeFlags & wxSIZE_ALLOW_MINUS_ONE)) nX1 = nCurrentX; if (nY == -1 && !(nSizeFlags & wxSIZE_ALLOW_MINUS_ONE)) @@ -530,7 +522,7 @@ void wxSlider::DoSetSize( wxGetCharSize( GetHWND() ,&nCx ,&nCy - ,&this->GetFont() + ,&vFont ); if ((m_windowStyle & wxSL_VERTICAL) != wxSL_VERTICAL) @@ -540,10 +532,10 @@ void wxSlider::DoSetSize( int nMinLen = 0; int nMaxLen = 0; - ::WinQueryWindowText((HWND)m_hStaticMin, 300, zBuf); - GetTextExtent(zBuf, &nMinLen, &nCyf, NULL, NULL, &this->GetFont()); - ::WinQueryWindowText((HWND)m_hStaticMax, 300, zBuf); - GetTextExtent(zBuf, &nMaxLen, &nCyf, NULL, NULL, &this->GetFont()); + ::WinQueryWindowText((HWND)m_hStaticMin, 300, (PSZ)zBuf); + GetTextExtent(zBuf, &nMinLen, &nCyf, NULL, NULL, &vFont); + ::WinQueryWindowText((HWND)m_hStaticMax, 300, (PSZ)zBuf); + GetTextExtent(zBuf, &nMaxLen, &nCyf, NULL, NULL, &vFont); if (m_hStaticValue) { @@ -553,7 +545,7 @@ void wxSlider::DoSetSize( ::WinSetWindowPos( (HWND)m_hStaticValue ,HWND_TOP ,(LONG)nXOffset - ,(LONG)nYOffset - (nCyf * 1.2) + ,(LONG)nYOffset - (LONG)(nCyf * 1.2) ,(LONG)nNewWidth ,(LONG)nValueHeight ,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW @@ -563,7 +555,7 @@ void wxSlider::DoSetSize( ::WinSetWindowPos( (HWND)m_hStaticMin ,HWND_TOP ,(LONG)nXOffset - ,(LONG)nYOffset - (nCyf * 1.2) + ,(LONG)nYOffset - (LONG)(nCyf * 1.2) ,(LONG)nMinLen ,(LONG)nCy ,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW @@ -590,12 +582,20 @@ void wxSlider::DoSetSize( ,(LONG)nSliderHeight ,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW ); + ::WinQueryWindowPos(GetHwnd(), GetSwp()); + ::WinSendMsg( GetHwnd() + ,SLM_SETSLIDERINFO + ,MPFROM2SHORT( SMA_SHAFTDIMENSIONS + ,0 + ) + ,MPFROMLONG((ULONG)(nSliderHeight/2)) + ); nXOffset += nSliderLength + nCx; ::WinSetWindowPos( (HWND)m_hStaticMax ,HWND_TOP ,(LONG)nXOffset - ,(LONG)nYOffset - (nCyf * 1.2) + ,(LONG)nYOffset - (LONG)(nCyf * 1.2) ,(LONG)nMaxLen ,(LONG)nCy ,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW @@ -639,35 +639,29 @@ void wxSlider::DoSetSize( int nMinLen; int nMaxLen; - ::WinQueryWindowText((HWND)m_hStaticMin, 300, zBuf); - GetTextExtent(zBuf, &nMinLen, &nCyf, NULL, NULL, &this->GetFont()); - ::WinQueryWindowText((HWND)m_hStaticMax, 300, zBuf); - GetTextExtent(zBuf, &nMaxLen, &nCyf, NULL, NULL, &this->GetFont()); + ::WinQueryWindowText((HWND)m_hStaticMin, 300, (PSZ)zBuf); + GetTextExtent(zBuf, &nMinLen, &nCyf, NULL, NULL, &vFont); + ::WinQueryWindowText((HWND)m_hStaticMax, 300, (PSZ)zBuf); + GetTextExtent(zBuf, &nMaxLen, &nCyf, NULL, NULL, &vFont); if (m_hStaticValue) { int nNewWidth = wxMax(nMinLen, nMaxLen); int nValueHeight = nCyf; - nNewWidth += nCx; - - // - // The height needs to be a bit bigger under Win95 if using native - // 3D effects. - // ::WinSetWindowPos( (HWND)m_hStaticValue ,HWND_TOP ,(LONG)nXOffset - ,(LONG)nYOffset + lHeight + ,(LONG)nYOffset + nHeight ,(LONG)nNewWidth ,(LONG)nValueHeight ,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW ); - nUsedHeight += nCy; + nUsedHeight += nCyf; } ::WinSetWindowPos( (HWND)m_hStaticMin ,HWND_TOP ,(LONG)nXOffset - ,(LONG)nYOffset + lHeight -lCyf + ,(LONG)nYOffset + nHeight - nCyf ,(LONG)nMinLen ,(LONG)nCy ,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW @@ -689,16 +683,24 @@ void wxSlider::DoSetSize( ::WinSetWindowPos( GetHwnd() ,HWND_TOP ,(LONG)nXOffset - ,(LONG)nYOffset + ,(LONG)nYOffset + nCyf ,(LONG)nSliderWidth ,(LONG)nSliderLength ,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW ); + ::WinQueryWindowPos(GetHwnd(), GetSwp()); + ::WinSendMsg( GetHwnd() + ,SLM_SETSLIDERINFO + ,MPFROM2SHORT( SMA_SHAFTDIMENSIONS + ,0 + ) + ,MPFROMLONG((ULONG)(nSliderWidth/2)) + ); nUsedHeight += nSliderLength; ::WinSetWindowPos( (HWND)m_hStaticMax ,HWND_TOP ,(LONG)nXOffset - ,(LONG)nYOffset + ,(LONG)nYOffset - nCyf ,(LONG)nMaxLen ,(LONG)nCy ,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW @@ -802,8 +804,10 @@ void wxSlider::GetPosition( vPoint.x -= vPt.x; vPoint.y -= vPt.y; } - *pnX = vPoint.x; - *pnY = vPoint.y; + if (pnX) + *pnX = vPoint.x; + if (pnY) + *pnY = vPoint.y; } // end of wxSlider::GetPosition int wxSlider::GetSelEnd() const @@ -854,8 +858,10 @@ void wxSlider::GetSize( wxFindMaxSize( m_hStaticValue ,&vRect ); - *pnWidth = vRect.xRight - vRect.xLeft; - *pnHeight = vRect.yBottom - vRect.yTop; + if (pnWidth) + *pnWidth = vRect.xRight - vRect.xLeft; + if (pnHeight) + *pnHeight = vRect.yTop - vRect.yBottom; } // end of wxSlider::GetSize int wxSlider::GetThumbLength() const @@ -874,7 +880,6 @@ int wxSlider::GetValue() const ) ); double dPixelToRange = (double)(nPixelRange - m_nThumbLength)/(double)(m_nRangeMax - m_nRangeMin); - int nNewPos = 0; int nPixelPos = SHORT1FROMMR(::WinSendMsg( GetHwnd() ,SLM_QUERYSLIDERINFO ,MPFROM2SHORT( SMA_SLIDERARMPOSITION @@ -883,7 +888,7 @@ int wxSlider::GetValue() const ,(MPARAM)0 ) ); - nNewPos = (int)(nPixelPos/dPixelToRange); + int nNewPos = (int)(nPixelPos/dPixelToRange); if (nNewPos > (m_nRangeMax - m_nRangeMin)/2) nNewPos++; return nNewPos; @@ -908,14 +913,12 @@ WXHBRUSH wxSlider::OnCtlColor( ); } // end of wxSlider::OnCtlColor -bool wxSlider::OS2OnScroll( - int WXUNUSED(nOrientation) -, WXWORD wParam -, WXWORD wPos -, WXHWND hControl -) +bool wxSlider::OS2OnScroll( int WXUNUSED(nOrientation), + WXWORD wParam, + WXWORD WXUNUSED(wPos), + WXHWND WXUNUSED(hControl) ) { - wxEventType eScrollEvent = wxEVT_NULL; + wxEventType eScrollEvent = wxEVT_NULL; switch (wParam) { @@ -931,28 +934,25 @@ bool wxSlider::OS2OnScroll( break; default: - return FALSE; + return false; } - int nPixelRange = SHORT1FROMMR(::WinSendMsg( GetHwnd() - ,SLM_QUERYSLIDERINFO - ,MPFROM2SHORT( SMA_SHAFTDIMENSIONS - ,SMA_RANGEVALUE - ) - ,(MPARAM)0 - ) - ); + int nPixelRange = SHORT1FROMMR(::WinSendMsg( GetHwnd() + , SLM_QUERYSLIDERINFO + , MPFROM2SHORT( SMA_SHAFTDIMENSIONS, SMA_RANGEVALUE ) + , (MPARAM)0 + ) + ); m_dPixelToRange = (double)(nPixelRange - m_nThumbLength)/(double)(m_nRangeMax - m_nRangeMin); - int nNewPos = 0; - int nPixelPos = SHORT1FROMMR(::WinSendMsg( GetHwnd() - ,SLM_QUERYSLIDERINFO - ,MPFROM2SHORT( SMA_SLIDERARMPOSITION - ,SMA_RANGEVALUE - ) - ,(MPARAM)0 - ) - ); - nNewPos = (nPixelPos/m_dPixelToRange); + int nNewPos = 0; + int nPixelPos = SHORT1FROMMR(::WinSendMsg( GetHwnd() + , SLM_QUERYSLIDERINFO + , MPFROM2SHORT( SMA_SLIDERARMPOSITION, SMA_RANGEVALUE ) + , (MPARAM)0 + ) + ); + + nNewPos = (int)(nPixelPos/m_dPixelToRange); if (nNewPos > (m_nRangeMax - m_nRangeMin)/2) nNewPos++; if ((nNewPos < GetMin()) || (nNewPos > GetMax())) @@ -960,38 +960,30 @@ bool wxSlider::OS2OnScroll( // // Out of range - but we did process it // - return TRUE; + return true; } SetValue(nNewPos); - wxScrollEvent vEvent( eScrollEvent - ,m_windowId - ); + wxScrollEvent vEvent( eScrollEvent, m_windowId ); vEvent.SetPosition(nNewPos); vEvent.SetEventObject(this); - GetEventHandler()->ProcessEvent(vEvent); + HandleWindowEvent(vEvent); - wxCommandEvent vCevent( wxEVT_COMMAND_SLIDER_UPDATED - ,GetId() - ); + wxCommandEvent vCevent( wxEVT_SLIDER, GetId() ); vCevent.SetInt(nNewPos); vCevent.SetEventObject(this); - return (GetEventHandler()->ProcessEvent(vCevent)); + return (HandleWindowEvent(vCevent)); } // end of wxSlider::OS2OnScroll -void wxSlider::SetLineSize( - int nLineSize -) +void wxSlider::SetLineSize( int nLineSize ) { m_nLineSize = nLineSize; } // end of wxSlider::SetLineSize -void wxSlider::SetPageSize( - int nPageSize -) +void wxSlider::SetPageSize( int nPageSize ) { m_nPageSize = nPageSize; } // end of wxSlider::SetPageSize @@ -1018,13 +1010,13 @@ void wxSlider::SetRange( if (m_hStaticMin) { wxSprintf(zBuf, wxT("%d"), m_nRangeMin); - ::WinSetWindowText((HWND)m_hStaticMin, zBuf); + ::WinSetWindowText((HWND)m_hStaticMin, (PSZ)zBuf); } if (m_hStaticMax) { wxSprintf(zBuf, wxT("%d"), m_nRangeMax); - ::WinSetWindowText((HWND)m_hStaticMax, zBuf); + ::WinSetWindowText((HWND)m_hStaticMax, (PSZ)zBuf); } } // end of wxSlider::SetRange @@ -1071,7 +1063,7 @@ void wxSlider::SetTick( int nTickPos ) { - nTickPos *= m_dPixelToRange; + nTickPos = (int)(nTickPos * m_dPixelToRange); ::WinSendMsg( GetHwnd() ,SLM_ADDDETENT ,MPFROMSHORT(nTickPos) @@ -1080,15 +1072,12 @@ void wxSlider::SetTick( } // end of wxSlider::SetTick // For trackbars only -void wxSlider::SetTickFreq( - int n -, int nPos -) +void wxSlider::DoSetTickFreq( int n ) { - SLDCDATA vSlData; - WNDPARAMS vWndParams; - int nPixelPos; - int i; + SLDCDATA vSlData; + WNDPARAMS vWndParams; + int nPixelPos; + int i; vSlData.cbSize = sizeof(SLDCDATA); if (m_windowStyle & wxSL_AUTOTICKS) @@ -1096,8 +1085,8 @@ void wxSlider::SetTickFreq( vSlData.usScale1Spacing = 0; vSlData.usScale2Spacing = 0; } - vSlData.usScale1Increments = (m_nRangeMax - m_nRangeMin)/n; - vSlData.usScale2Increments = (m_nRangeMax - m_nRangeMin)/n; + vSlData.usScale1Increments = (USHORT)((m_nRangeMax - m_nRangeMin)/n); + vSlData.usScale2Increments = (USHORT)((m_nRangeMax - m_nRangeMin)/n); vWndParams.fsStatus = WPM_CTLDATA; vWndParams.cchText = 0L; @@ -1109,7 +1098,7 @@ void wxSlider::SetTickFreq( ::WinSendMsg(GetHwnd(), WM_SETWINDOWPARAMS, (MPARAM)&vWndParams, (MPARAM)0); for (i = 1; i < (m_nRangeMax - m_nRangeMin)/n; i++) { - nPixelPos = i * n * m_dPixelToRange; + nPixelPos = (int)(i * n * m_dPixelToRange); ::WinSendMsg( GetHwnd() ,SLM_ADDDETENT ,MPFROMSHORT(nPixelPos) @@ -1122,14 +1111,6 @@ void wxSlider::SetValue( int nValue ) { - int nPixelPos = SHORT1FROMMR(::WinSendMsg( GetHwnd() - ,SLM_QUERYSLIDERINFO - ,MPFROM2SHORT( SMA_SLIDERARMPOSITION - ,SMA_RANGEVALUE - ) - ,(MPARAM)0 - ) - ); int nPixelRange = SHORT1FROMMR(::WinSendMsg( GetHwnd() ,SLM_QUERYSLIDERINFO ,MPFROM2SHORT( SMA_SHAFTDIMENSIONS @@ -1151,7 +1132,7 @@ void wxSlider::SetValue( if (m_hStaticValue) { wxSprintf(wxBuffer, wxT("%d"), nValue); - ::WinSetWindowText((HWND)m_hStaticValue, wxBuffer); + ::WinSetWindowText((HWND)m_hStaticValue, (PSZ)wxBuffer); } } // end of wxSlider::SetValue @@ -1166,6 +1147,7 @@ bool wxSlider::Show( ::WinShowWindow((HWND)m_hStaticMin, bShow); if(m_hStaticMax) ::WinShowWindow((HWND)m_hStaticMax, bShow); - return TRUE; + return true; } // end of wxSlider::Show +#endif // wxUSE_SLIDER