/////////////////////////////////////////////////////////////////////////////
-// Name: slider.cpp
+// Name: src/os2/slider.cpp
// Purpose: wxSlider
// Author: David Webster
// Modified by:
#endif
#ifndef WX_PRECOMP
-#include <stdio.h>
-#include <wx/utils.h>
-#include <wx/brush.h>
+ #include <stdio.h>
+ #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;
::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)
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)
{
,(LONG)nYOffset
,(LONG)nNewWidth
,(LONG)nValueHeight
- ,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW
+ ,SWP_SIZE | SWP_MOVE
);
}
::WinSetWindowPos( (HWND)m_hStaticMin
,(LONG)nXOffset - (nMinLen + nCx)
,(LONG)nYOffset
,(LONG)nMinLen
- ,(LONG)nCy
- ,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW
+ ,(LONG)nCyf
+ ,SWP_SIZE | SWP_MOVE
);
nXOffset += nWidth + nCx;
,(LONG)nXOffset
,(LONG)nYOffset
,(LONG)nMaxLen
- ,(LONG)nCy
- ,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW
+ ,(LONG)nCyf
+ ,SWP_ZORDER | SWP_SHOW
+ );
+ }
+ }
+ else
+ {
+ //
+ // Now deal with a vertical slider
+ //
+
+ if (m_windowStyle & wxSL_LABELS )
+ {
+ int nMinLen = 0;
+ int nMaxLen = 0;
+
+ ::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));
+
+ ::WinSetWindowPos( (HWND)m_hStaticValue
+ ,HWND_TOP
+ ,(LONG)nXOffset
+ ,(LONG)nYOffset + nHeight + nCyf
+ ,(LONG)nNewWidth
+ ,(LONG)nCyf
+ ,SWP_SIZE | SWP_MOVE
+ );
+ }
+ ::WinSetWindowPos( (HWND)m_hStaticMax
+ ,HWND_TOP
+ ,(LONG)nXOffset
+ ,(LONG)nYOffset + nHeight
+ ,(LONG)nMaxLen
+ ,(LONG)nCyf
+ ,SWP_SIZE | SWP_MOVE
+ );
+ ::WinSetWindowPos( (HWND)m_hStaticMin
+ ,HWND_TOP
+ ,(LONG)nXOffset
+ ,(LONG)nYOffset - nCyf
+ ,(LONG)nMinLen
+ ,(LONG)nCyf
+ ,SWP_SIZE | SWP_MOVE
);
}
}
- //
- // Now deal with a vertical slider -- OS/2 doesn't have vertical sliders
- //
} // end of wxSlider::AdjustSubControls
void wxSlider::ClearSel()
, const wxPoint& rPos
, const wxSize& rSize
, long lStyle
-#if wxUSE_VALIDATORS
, const wxValidator& rValidator
-#endif
, const wxString& rsName
)
{
m_windowStyle = lStyle;
m_nTickFreq = 0;
- if (vId == -1)
+ if (vId == wxID_ANY)
m_windowId = (int)NewControlId();
else
m_windowId = vId;
{
lMsStyle |= WS_VISIBLE | SS_TEXT | DT_VCENTER;
- //
- // If the parent is a scrolled window the controls must
- // have this style or they will overlap the scrollbars
- //
- if (pParent)
- if (pParent->IsKindOf(CLASSINFO(wxScrolledWindow)) ||
- pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)))
- lMsStyle |= WS_CLIPSIBLINGS;
-
m_hStaticValue = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
,WC_STATIC // Window class
,(PSZ)NULL // Initial Text
//
// 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;
- //
- // If the parent is a scrolled window the controls must
- // have this style or they will overlap the scrollbars
- //
- if (pParent)
- if (pParent->IsKindOf(CLASSINFO(wxScrolledWindow)) ||
- pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)))
- lWstyle |= WS_CLIPSIBLINGS;
m_hStaticMin = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
,WC_STATIC // Window class
vSlData.cbSize = sizeof(SLDCDATA);
if (m_windowStyle & wxSL_VERTICAL)
- lMsStyle = SLS_VERTICAL | WS_VISIBLE | WS_TABSTOP;
+ lMsStyle = SLS_VERTICAL | SLS_HOMEBOTTOM | WS_VISIBLE | WS_TABSTOP;
else
- lMsStyle = SLS_HORIZONTAL | WS_VISIBLE | WS_TABSTOP;
+ lMsStyle = SLS_HORIZONTAL | SLS_HOMELEFT | WS_VISIBLE | WS_TABSTOP;
if (m_windowStyle & wxCLIP_SIBLINGS)
lMsStyle |= WS_CLIPSIBLINGS;
lMsStyle |= SLS_PRIMARYSCALE1 | SLS_PRIMARYSCALE2;
else
lMsStyle |= SLS_PRIMARYSCALE2;
-
- //
- // If the parent is a scrolled window the controls must
- // have this style or they will overlap the scrollbars
- //
- if (pParent)
- if (pParent->IsKindOf(CLASSINFO(wxScrolledWindow)) ||
- pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)))
- lMsStyle |= WS_CLIPSIBLINGS;
+ 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;
//
::WinSendMsg( hScrollBar
,SLM_SETTICKSIZE
- ,MPFROM2SHORT(SMA_SETALLTICKS, 6)
+ ,MPFROM2SHORT(SMA_SETALLTICKS, (USHORT)12)
,NULL
);
//
m_hWnd = (WXHWND)hScrollBar;
SubclassWin(GetHWND());
::WinSetWindowText((HWND)m_hWnd, "");
- SetFont(pParent->GetFont());
+
+ SetFont(*wxSMALL_FONT);
if (m_windowStyle & wxSL_LABELS)
{
//
// 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;
- //
- // If the parent is a scrolled window the controls must
- // have this style or they will overlap the scrollbars
- //
- if (pParent)
- if (pParent->IsKindOf(CLASSINFO(wxScrolledWindow)) ||
- pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)))
- lWstyle |= WS_CLIPSIBLINGS;
m_hStaticMax = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
,WC_STATIC // Window class
,NULL // no control data
,NULL // no Presentation parameters
);
- if (GetFont().Ok())
+ if (GetFont().IsOk())
{
if (GetFont().GetResourceHandle())
{
}
}
+ SetXComp(0);
+ SetYComp(0);
SetSize( nX
,nY
,nWidth
)
) + 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
,sizeof(LONG)
,(PVOID)&lColor
);
+ vColour.Set(wxString(wxT("BLUE")));
+ lColor = (LONG)vColour.GetPixel();
+ ::WinSetPresParam( m_hWnd
+ ,PP_HILITEBACKGROUNDCOLOR
+ ,sizeof(LONG)
+ ,(PVOID)&lColor
+ );
SetValue(nValue);
- 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
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))
wxGetCharSize( GetHWND()
,&nCx
,&nCy
- ,&this->GetFont()
+ ,&vFont
);
if ((m_windowStyle & wxSL_VERTICAL) != wxSL_VERTICAL)
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)
{
::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
::WinSetWindowPos( (HWND)m_hStaticMin
,HWND_TOP
,(LONG)nXOffset
- ,(LONG)nYOffset - nCyf
+ ,(LONG)nYOffset - (LONG)(nCyf * 1.2)
,(LONG)nMinLen
,(LONG)nCy
,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW
,(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
+ ,(LONG)nYOffset - (LONG)(nCyf * 1.2)
,(LONG)nMaxLen
,(LONG)nCy
,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW
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.
- //
- nValueHeight = (int)(nValueHeight * 1.5);
::WinSetWindowPos( (HWND)m_hStaticValue
,HWND_TOP
,(LONG)nXOffset
- ,(LONG)nYOffset
+ ,(LONG)nYOffset + nHeight
,(LONG)nNewWidth
,(LONG)nValueHeight
,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW
);
- nYOffset -= nValueHeight;
- nUsedHeight += nValueHeight;
+ nUsedHeight += nCyf;
}
::WinSetWindowPos( (HWND)m_hStaticMin
,HWND_TOP
,(LONG)nXOffset
- ,(LONG)nYOffset
+ ,(LONG)nYOffset + nHeight - nCyf
,(LONG)nMinLen
,(LONG)nCy
,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW
);
- nYOffset -= nCy;
nUsedHeight += nCy;
int nSliderLength = nHeight1 - (nUsedHeight + (2 * nCy));
if (nSliderLength < 100)
nSliderLength = 100;
- ::WinSetWindowPos( (HWND)m_hStaticMin
+ ::WinSetWindowPos( GetHwnd()
,HWND_TOP
,(LONG)nXOffset
- ,(LONG)nYOffset
+ ,(LONG)nYOffset + nCyf
,(LONG)nSliderWidth
,(LONG)nSliderLength
,SWP_ZORDER | SWP_SIZE | SWP_MOVE | SWP_SHOW
);
- nYOffset -= nSliderLength;
+ ::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
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
return 0;
} // end of wxSlider::GetSelStart
+void wxSlider::DoGetSize(
+ int* pnWidth
+, int* pnHeight
+) const
+{
+ GetSize( pnWidth
+ ,pnHeight
+ );
+} // end of wxSlider::DoGetSize
+
void wxSlider::GetSize(
int* pnWidth
, int* pnHeight
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
)
);
double dPixelToRange = (double)(nPixelRange - m_nThumbLength)/(double)(m_nRangeMax - m_nRangeMin);
- int nNewPos = 0;
int nPixelPos = SHORT1FROMMR(::WinSendMsg( GetHwnd()
,SLM_QUERYSLIDERINFO
,MPFROM2SHORT( SMA_SLIDERARMPOSITION
,(MPARAM)0
)
);
- nNewPos = (int)(nPixelPos/dPixelToRange);
+ int nNewPos = (int)(nPixelPos/dPixelToRange);
if (nNewPos > (m_nRangeMax - m_nRangeMin)/2)
nNewPos++;
return nNewPos;
);
} // 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)
{
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()))
//
// 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
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
int nTickPos
)
{
- nTickPos *= m_dPixelToRange;
+ nTickPos = (int)(nTickPos * m_dPixelToRange);
::WinSendMsg( GetHwnd()
,SLM_ADDDETENT
,MPFROMSHORT(nTickPos)
} // 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)
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;
::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)
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
if (m_hStaticValue)
{
wxSprintf(wxBuffer, wxT("%d"), nValue);
- ::WinSetWindowText((HWND)m_hStaticValue, wxBuffer);
+ ::WinSetWindowText((HWND)m_hStaticValue, (PSZ)wxBuffer);
}
} // end of wxSlider::SetValue
::WinShowWindow((HWND)m_hStaticMin, bShow);
if(m_hStaticMax)
::WinShowWindow((HWND)m_hStaticMax, bShow);
- return TRUE;
+ return true;
} // end of wxSlider::Show
+#endif // wxUSE_SLIDER