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
/////////////////////////////////////////////////////////////////////////////
#ifndef _SLIDER95_H_
#define _SLIDER95_H_
#ifndef _WX_SLIDER95_H_
#define _WX_SLIDER95_H_
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "slider95.h"
#endif
class WXDLLEXPORT wxSubwindows;
// Slider
class WXDLLEXPORT wxSlider95 : public wxSliderBase
{
public:
wxSlider95();
wxSlider95() { Init(); }
wxSlider95(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)
wxSlider95(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)
{
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,
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);
virtual ~wxSlider95();
// slider methods
virtual int GetValue() const;
virtual void SetValue(int);
void GetPosition(int *x, int *y) const;
bool Show(bool show = true);
void SetRange(int minValue, int maxValue);
int GetMin() const { return m_rangeMin; }
int GetMax() const { return m_rangeMax; }
// For trackbars only
// Win32-specific slider methods
void SetTickFreq(int n, int pos);
int GetTickFreq() const { return m_tickFreq; }
void SetPageSize(int pageSize);
@@ -71,36 +78,57 @@ public:
int GetThumbLength() const;
void SetTick(int tickPos);
// IMPLEMENTATION
WXHWND GetStaticMin() const { return m_staticMin; }
WXHWND GetStaticMax() const { return m_staticMax; }
WXHWND GetEditValue() const { return m_staticValue; }
// implementation only from now on
WXHWND GetStaticMin() const;
WXHWND GetStaticMax() const;
WXHWND GetEditValue() const;
virtual bool ContainsHWND(WXHWND hWnd) const;
void Command(wxCommandEvent& event);
virtual bool MSWOnScroll(int orientation, WXWORD wParam,
WXWORD pos, WXHWND control);
void DoGetPosition(int *x, int *y) const;
bool Show(bool show = true);
protected:
WXHWND m_staticMin;
WXHWND m_staticMax;
WXHWND m_staticValue;
// common part of all ctors
void Init();
// 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_rangeMax;
int m_pageSize;
int m_lineSize;
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)
};
#endif
// _SLIDER95_H_
#endif // _WX_SLIDER95_H_