use MSWAlwaysDrawBg() to fix the problem with black background; rewrote/cleaned up the positioning and window creation code

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30936 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2004-12-11 23:35:41 +00:00
parent 19fdd4efb6
commit 6181cef532
2 changed files with 406 additions and 586 deletions

View File

@@ -9,53 +9,60 @@
// Licence: wxWindows licence // Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifndef _SLIDER95_H_ #ifndef _WX_SLIDER95_H_
#define _SLIDER95_H_ #define _WX_SLIDER95_H_
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "slider95.h" #pragma interface "slider95.h"
#endif #endif
class WXDLLEXPORT wxSubwindows;
// Slider // Slider
class WXDLLEXPORT wxSlider95 : public wxSliderBase class WXDLLEXPORT wxSlider95 : public wxSliderBase
{ {
public: public:
wxSlider95(); wxSlider95() { Init(); }
wxSlider95(wxWindow *parent, wxWindowID id, wxSlider95(wxWindow *parent,
int value, int minValue, int maxValue, wxWindowID id,
const wxPoint& pos = wxDefaultPosition, int value,
const wxSize& size = wxDefaultSize, int minValue,
long style = wxSL_HORIZONTAL, int maxValue,
const wxValidator& validator = wxDefaultValidator, const wxPoint& pos = wxDefaultPosition,
const wxString& name = wxSliderNameStr) const wxSize& size = wxDefaultSize,
long style = wxSL_HORIZONTAL,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxSliderNameStr)
{ {
Create(parent, id, value, minValue, maxValue, pos, size, style, validator, name); Init();
(void)Create(parent, id, value, minValue, maxValue,
pos, size, style, validator, name);
} }
~wxSlider95(); bool Create(wxWindow *parent,
wxWindowID id,
int value,
int minValue, int maxValue,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxSL_HORIZONTAL,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxSliderNameStr);
bool Create(wxWindow *parent, wxWindowID id, virtual ~wxSlider95();
int value, int minValue, int maxValue,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxSL_HORIZONTAL,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxSliderNameStr);
// slider methods
virtual int GetValue() const; virtual int GetValue() const;
virtual void SetValue(int); virtual void SetValue(int);
void GetPosition(int *x, int *y) const;
bool Show(bool show = true);
void SetRange(int minValue, int maxValue); void SetRange(int minValue, int maxValue);
int GetMin() const { return m_rangeMin; } int GetMin() const { return m_rangeMin; }
int GetMax() const { return m_rangeMax; } int GetMax() const { return m_rangeMax; }
// For trackbars only // Win32-specific slider methods
void SetTickFreq(int n, int pos); void SetTickFreq(int n, int pos);
int GetTickFreq() const { return m_tickFreq; } int GetTickFreq() const { return m_tickFreq; }
void SetPageSize(int pageSize); void SetPageSize(int pageSize);
@@ -71,36 +78,57 @@ public:
int GetThumbLength() const; int GetThumbLength() const;
void SetTick(int tickPos); void SetTick(int tickPos);
// IMPLEMENTATION // implementation only from now on
WXHWND GetStaticMin() const { return m_staticMin; } WXHWND GetStaticMin() const;
WXHWND GetStaticMax() const { return m_staticMax; } WXHWND GetStaticMax() const;
WXHWND GetEditValue() const { return m_staticValue; } WXHWND GetEditValue() const;
virtual bool ContainsHWND(WXHWND hWnd) const; virtual bool ContainsHWND(WXHWND hWnd) const;
void Command(wxCommandEvent& event); void Command(wxCommandEvent& event);
virtual bool MSWOnScroll(int orientation, WXWORD wParam, virtual bool MSWOnScroll(int orientation, WXWORD wParam,
WXWORD pos, WXHWND control); WXWORD pos, WXHWND control);
void DoGetPosition(int *x, int *y) const;
bool Show(bool show = true);
protected: protected:
WXHWND m_staticMin; // common part of all ctors
WXHWND m_staticMax; void Init();
WXHWND m_staticValue;
// format an integer value as string
static wxString Format(int n) { return wxString::Format(_T("%d"), n); }
// get the boundig box for the slider and possible labels
wxRect GetBoundingBox() const;
// get the height and, if the pointer is not NULL, width of our labels
int GetLabelsSize(int *width = NULL) const;
// overridden base class virtuals
virtual void DoGetSize(int *width, int *height) const;
virtual void DoMoveWindow(int x, int y, int width, int height);
virtual wxSize DoGetBestSize() const;
virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle = NULL) const;
virtual bool MSWAlwaysDrawBg() const { return true; }
// the labels windows, if any
wxSubwindows *m_labels;
int m_rangeMin; int m_rangeMin;
int m_rangeMax; int m_rangeMax;
int m_pageSize; int m_pageSize;
int m_lineSize; int m_lineSize;
int m_tickFreq; int m_tickFreq;
virtual void DoGetSize(int *width, int *height) const;
virtual void DoSetSize(int x, int y,
int width, int height,
int sizeFlags = wxSIZE_AUTO);
virtual wxSize DoGetBestSize() const;
DECLARE_DYNAMIC_CLASS_NO_COPY(wxSlider95) DECLARE_DYNAMIC_CLASS_NO_COPY(wxSlider95)
}; };
#endif #endif // _WX_SLIDER95_H_
// _SLIDER95_H_

File diff suppressed because it is too large Load Diff