]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/slider95.cpp
support full 32bit range in wxGauge
[wxWidgets.git] / src / msw / slider95.cpp
index d818a6b3a2761cfd55be581843eda6cf16a9f1c2..7e02dd7f62df6094d98cea76c65188a80731b3fe 100644 (file)
@@ -9,7 +9,7 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "slider95.h"
 #endif
 
 #include "wx/msw/slider95.h"
 #include "wx/msw/private.h"
 
-#if defined(__WIN95__) && !((defined(__GNUWIN32_OLD__) || defined(__TWIN32__)) && !defined(__CYGWIN10__))
+#if defined(__WIN95__) && !(defined(__GNUWIN32_OLD__) && !defined(__CYGWIN10__))
     #include <commctrl.h>
 #endif
 
-IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl)
+#if wxUSE_EXTENDED_RTTI
+WX_DEFINE_FLAGS( wxSliderStyle )
+
+wxBEGIN_FLAGS( wxSliderStyle )
+    // new style border flags, we put them first to
+    // use them for streaming out
+    wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+    wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+    wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+    wxFLAGS_MEMBER(wxBORDER_RAISED)
+    wxFLAGS_MEMBER(wxBORDER_STATIC)
+    wxFLAGS_MEMBER(wxBORDER_NONE)
+    
+    // old style border flags
+    wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+    wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+    wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+    wxFLAGS_MEMBER(wxRAISED_BORDER)
+    wxFLAGS_MEMBER(wxSTATIC_BORDER)
+    wxFLAGS_MEMBER(wxNO_BORDER)
+
+    // standard window styles
+    wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+    wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+    wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+    wxFLAGS_MEMBER(wxWANTS_CHARS)
+    wxFLAGS_MEMBER(wxNO_FULL_REPAINT_ON_RESIZE)
+    wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+    wxFLAGS_MEMBER(wxVSCROLL)
+    wxFLAGS_MEMBER(wxHSCROLL)
+
+    wxFLAGS_MEMBER(wxSL_HORIZONTAL)
+    wxFLAGS_MEMBER(wxSL_VERTICAL)
+    wxFLAGS_MEMBER(wxSL_AUTOTICKS)
+    wxFLAGS_MEMBER(wxSL_LABELS)
+    wxFLAGS_MEMBER(wxSL_LEFT)
+    wxFLAGS_MEMBER(wxSL_TOP)
+    wxFLAGS_MEMBER(wxSL_RIGHT)
+    wxFLAGS_MEMBER(wxSL_BOTTOM)
+    wxFLAGS_MEMBER(wxSL_BOTH)
+    wxFLAGS_MEMBER(wxSL_SELRANGE)
+
+wxEND_FLAGS( wxSliderStyle )
+
+IMPLEMENT_DYNAMIC_CLASS_XTI(wxSlider95, wxControl,"wx/scrolbar.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxSlider95)
+    wxEVENT_RANGE_PROPERTY( Scroll , wxEVT_SCROLL_TOP , wxEVT_SCROLL_ENDSCROLL , wxScrollEvent )
+    wxEVENT_PROPERTY( Updated , wxEVT_COMMAND_SLIDER_UPDATED , wxCommandEvent )
+
+    wxPROPERTY( Value , int , SetValue, GetValue , 0, 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       wxPROPERTY( Minimum , int , SetMin, GetMin, 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       wxPROPERTY( Maximum , int , SetMax, GetMax, 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       wxPROPERTY( PageSize , int , SetPageSize, GetLineSize, 1 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       wxPROPERTY( LineSize , int , SetLineSize, GetLineSize, 1 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       wxPROPERTY( ThumbLength , int , SetThumbLength, GetThumbLength, 1 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+    wxPROPERTY_FLAGS( WindowStyle , wxSliderStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxBEGIN_HANDLERS_TABLE(wxSlider95)
+wxEND_HANDLERS_TABLE()
+
+wxCONSTRUCTOR_8( wxSlider95 , wxWindow* , Parent , wxWindowID , Id , int , Value , int , Minimum , int , Maximum , wxPoint , Position , wxSize , Size , long , WindowStyle )
+#else
+IMPLEMENT_DYNAMIC_CLASS(wxSlider95, wxControl)
+#endif
 
 // Slider
 wxSlider95::wxSlider95()
@@ -56,9 +121,12 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id,
            int value, int minValue, int maxValue,
            const wxPoint& pos,
            const wxSize& size, long style,
-           const wxValidator& validator,
+           const wxValidator& wxVALIDATOR_PARAM(validator),
            const wxString& name)
 {
+    if ( (style & wxBORDER_MASK) == wxBORDER_DEFAULT )
+        style |= wxBORDER_NONE;
+
     SetName(name);
 #if wxUSE_VALIDATORS
     SetValidator(validator);
@@ -90,15 +158,14 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id,
     long msStyle = 0;
     long wstyle = 0;
 
-    if ( m_windowStyle & wxCLIP_SIBLINGS )
-        msStyle |= WS_CLIPSIBLINGS;
-
     if ( m_windowStyle & wxSL_LABELS )
     {
-        msStyle |= WS_CHILD | WS_VISIBLE | WS_BORDER | SS_CENTER;
+        msStyle |= SS_CENTER;
 
-        bool want3D;
-        WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ;
+        WXDWORD exStyle = 0;
+        long valueStyle = m_windowStyle & ~wxBORDER_MASK;
+        valueStyle |= wxBORDER_SUNKEN;
+        msStyle |= MSWGetStyle(valueStyle, & exStyle) ;
 
         m_staticValue = (WXHWND) CreateWindowEx
             (
@@ -123,10 +190,9 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id,
             );
     }
 
-    msStyle = 0;
+    WXDWORD exStyle = 0;
 
-    if ( m_windowStyle & wxCLIP_SIBLINGS )
-        msStyle |= WS_CLIPSIBLINGS;
+    msStyle = MSWGetStyle(GetWindowStyle(), & exStyle) ;    
 
     if (m_windowStyle & wxSL_VERTICAL)
         msStyle = TBS_VERT | WS_CHILD | WS_VISIBLE | WS_TABSTOP ;
@@ -154,7 +220,7 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id,
 
     HWND scroll_bar = CreateWindowEx
         (
-            MakeExtendedStyle(m_windowStyle), TRACKBAR_CLASS, wxT(""),
+            exStyle, TRACKBAR_CLASS, wxEmptyString,
             msStyle,
             0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId,
             wxGetInstance(), NULL
@@ -173,7 +239,7 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id,
 
     SubclassWin(GetHWND());
 
-    ::SetWindowText((HWND) m_hWnd, wxT(""));
+    ::SetWindowText((HWND) m_hWnd, wxEmptyString);
 
     SetFont(parent->GetFont());
 
@@ -593,9 +659,13 @@ void wxSlider95::SetRange(int minValue, int maxValue)
 WXHBRUSH wxSlider95::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
             WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
 {
+#ifndef __WXWINCE__
     if ( nCtlColor == CTLCOLOR_SCROLLBAR )
         return 0;
-
+#else
+    if ( nCtlColor != CTLCOLOR_STATIC )
+        return 0;
+#endif
     // Otherwise, it's a static
     return wxControl::OnCtlColor(pDC, pWnd, nCtlColor, message, wParam, lParam);
 }