~ubuntu-dev/wxwidgets2.6/upstream-debian

« back to all changes in this revision

Viewing changes to src/msw/gauge95.cpp

  • Committer: Daniel T Chen
  • Date: 2006-06-26 10:15:11 UTC
  • Revision ID: crimsun@ubuntu.com-20060626101511-a4436cec4c6d9b35
ImportĀ DebianĀ 2.6.3.2.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/////////////////////////////////////////////////////////////////////////////
 
2
// Name:        src/msw/gauge95.cpp
 
3
// Purpose:     wxGauge95 class
 
4
// Author:      Julian Smart
 
5
// Modified by:
 
6
// Created:     01/02/97
 
7
// RCS-ID:      $Id: gauge95.cpp,v 1.47 2004/08/26 08:46:18 ABX Exp $
 
8
// Copyright:   (c) Julian Smart
 
9
// Licence:     wxWindows licence
 
10
/////////////////////////////////////////////////////////////////////////////
 
11
 
 
12
// ============================================================================
 
13
// declarations
 
14
// ============================================================================
 
15
 
 
16
// ----------------------------------------------------------------------------
 
17
// headers
 
18
// ----------------------------------------------------------------------------
 
19
 
 
20
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 
21
    #pragma implementation "gauge95.h"
 
22
#endif
 
23
 
 
24
// For compilers that support precompilation, includes "wx.h".
 
25
#include "wx/wxprec.h"
 
26
 
 
27
#ifdef __BORLANDC__
 
28
    #pragma hdrstop
 
29
#endif
 
30
 
 
31
#ifndef WX_PRECOMP
 
32
    #include "wx/defs.h"
 
33
#endif
 
34
 
 
35
#if wxUSE_GAUGE
 
36
 
 
37
#include "wx/gauge.h"
 
38
#include "wx/msw/private.h"
 
39
 
 
40
#if !(defined(__GNUWIN32_OLD__) && !defined(__CYGWIN10__))
 
41
    #include <commctrl.h>
 
42
#endif
 
43
 
 
44
// ----------------------------------------------------------------------------
 
45
// constants
 
46
// ----------------------------------------------------------------------------
 
47
 
 
48
// old commctrl.h (< 4.71) don't have those
 
49
#ifndef PBS_SMOOTH
 
50
    #define PBS_SMOOTH 0x01
 
51
#endif
 
52
 
 
53
#ifndef PBS_VERTICAL
 
54
    #define PBS_VERTICAL 0x04
 
55
#endif
 
56
 
 
57
#ifndef PBM_SETBARCOLOR
 
58
    #define PBM_SETBARCOLOR         (WM_USER+9)
 
59
#endif
 
60
 
 
61
#ifndef PBM_SETBKCOLOR
 
62
    #define PBM_SETBKCOLOR          0x2001
 
63
#endif
 
64
 
 
65
// ----------------------------------------------------------------------------
 
66
// wxWin macros
 
67
// ----------------------------------------------------------------------------
 
68
 
 
69
#if wxUSE_EXTENDED_RTTI
 
70
WX_DEFINE_FLAGS( wxGaugeStyle )
 
71
 
 
72
wxBEGIN_FLAGS( wxGaugeStyle )
 
73
    // new style border flags, we put them first to
 
74
    // use them for streaming out
 
75
    wxFLAGS_MEMBER(wxBORDER_SIMPLE)
 
76
    wxFLAGS_MEMBER(wxBORDER_SUNKEN)
 
77
    wxFLAGS_MEMBER(wxBORDER_DOUBLE)
 
78
    wxFLAGS_MEMBER(wxBORDER_RAISED)
 
79
    wxFLAGS_MEMBER(wxBORDER_STATIC)
 
80
    wxFLAGS_MEMBER(wxBORDER_NONE)
 
81
 
 
82
    // old style border flags
 
83
    wxFLAGS_MEMBER(wxSIMPLE_BORDER)
 
84
    wxFLAGS_MEMBER(wxSUNKEN_BORDER)
 
85
    wxFLAGS_MEMBER(wxDOUBLE_BORDER)
 
86
    wxFLAGS_MEMBER(wxRAISED_BORDER)
 
87
    wxFLAGS_MEMBER(wxSTATIC_BORDER)
 
88
    wxFLAGS_MEMBER(wxBORDER)
 
89
 
 
90
    // standard window styles
 
91
    wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
 
92
    wxFLAGS_MEMBER(wxCLIP_CHILDREN)
 
93
    wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
 
94
    wxFLAGS_MEMBER(wxWANTS_CHARS)
 
95
    wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
 
96
    wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
 
97
    wxFLAGS_MEMBER(wxVSCROLL)
 
98
    wxFLAGS_MEMBER(wxHSCROLL)
 
99
 
 
100
    wxFLAGS_MEMBER(wxGA_HORIZONTAL)
 
101
    wxFLAGS_MEMBER(wxGA_VERTICAL)
 
102
    wxFLAGS_MEMBER(wxGA_PROGRESSBAR)
 
103
    wxFLAGS_MEMBER(wxGA_SMOOTH)
 
104
 
 
105
wxEND_FLAGS( wxGaugeStyle )
 
106
 
 
107
IMPLEMENT_DYNAMIC_CLASS_XTI(wxGauge, wxControl,"wx/gauge.h")
 
108
 
 
109
wxBEGIN_PROPERTIES_TABLE(wxGauge95)
 
110
    wxPROPERTY( Value , int , SetValue, GetValue, 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
 
111
    wxPROPERTY( Range , int , SetRange, GetRange, 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
 
112
    wxPROPERTY( ShadowWidth , int , SetShadowWidth, GetShadowWidth, 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
 
113
    wxPROPERTY( BezelFace , int , SetBezelFace, GetBezelFace, 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
 
114
    wxPROPERTY_FLAGS( WindowStyle , wxGaugeStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , EMPTY_MACROVALUE , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
 
115
wxEND_PROPERTIES_TABLE()
 
116
 
 
117
wxBEGIN_HANDLERS_TABLE(wxGauge95)
 
118
wxEND_HANDLERS_TABLE()
 
119
 
 
120
wxCONSTRUCTOR_6( wxGauge95 , wxWindow* , Parent , wxWindowID , Id , int , Range , wxPoint , Position , wxSize , Size , long , WindowStyle )
 
121
#else
 
122
IMPLEMENT_DYNAMIC_CLASS(wxGauge95, wxControl)
 
123
#endif
 
124
 
 
125
// ============================================================================
 
126
// wxGauge95 implementation
 
127
// ============================================================================
 
128
 
 
129
// ----------------------------------------------------------------------------
 
130
// wxGauge95 creation
 
131
// ----------------------------------------------------------------------------
 
132
 
 
133
bool wxGauge95::Create(wxWindow *parent,
 
134
                       wxWindowID id,
 
135
                       int range,
 
136
                       const wxPoint& pos,
 
137
                       const wxSize& size,
 
138
                       long style,
 
139
                       const wxValidator& validator,
 
140
                       const wxString& name)
 
141
{
 
142
    if ( !CreateControl(parent, id, pos, size, style, validator, name) )
 
143
        return false;
 
144
 
 
145
    if ( !MSWCreateControl(PROGRESS_CLASS, wxEmptyString, pos, size) )
 
146
        return false;
 
147
 
 
148
    SetRange(range);
 
149
 
 
150
    return true;
 
151
}
 
152
 
 
153
WXDWORD wxGauge95::MSWGetStyle(long style, WXDWORD *exstyle) const
 
154
{
 
155
    WXDWORD msStyle = wxControl::MSWGetStyle(style, exstyle);
 
156
 
 
157
    if ( style & wxGA_VERTICAL )
 
158
        msStyle |= PBS_VERTICAL;
 
159
 
 
160
    if ( style & wxGA_SMOOTH )
 
161
        msStyle |= PBS_SMOOTH;
 
162
 
 
163
    return msStyle;
 
164
}
 
165
 
 
166
// ----------------------------------------------------------------------------
 
167
// wxGauge95 geometry
 
168
// ----------------------------------------------------------------------------
 
169
 
 
170
wxSize wxGauge95::DoGetBestSize() const
 
171
{
 
172
    // VZ: no idea where does 28 come from, it was there before my changes and
 
173
    //     as nobody ever complained I guess we can leave it...
 
174
    if (HasFlag(wxGA_VERTICAL))
 
175
        return wxSize(28, 100);
 
176
    else
 
177
        return wxSize(100, 28);
 
178
}
 
179
 
 
180
// ----------------------------------------------------------------------------
 
181
// wxGauge95 setters
 
182
// ----------------------------------------------------------------------------
 
183
 
 
184
void wxGauge95::SetRange(int r)
 
185
{
 
186
    m_rangeMax = r;
 
187
 
 
188
#ifdef PBM_SETRANGE32
 
189
    ::SendMessage(GetHwnd(), PBM_SETRANGE32, 0, r);
 
190
#else // !PBM_SETRANGE32
 
191
    // fall back to PBM_SETRANGE (limited to 16 bits)
 
192
    ::SendMessage(GetHwnd(), PBM_SETRANGE, 0, MAKELPARAM(0, r));
 
193
#endif // PBM_SETRANGE32/!PBM_SETRANGE32
 
194
}
 
195
 
 
196
void wxGauge95::SetValue(int pos)
 
197
{
 
198
    m_gaugePos = pos;
 
199
 
 
200
    ::SendMessage(GetHwnd(), PBM_SETPOS, pos, 0);
 
201
}
 
202
 
 
203
bool wxGauge95::SetForegroundColour(const wxColour& col)
 
204
{
 
205
    if ( !wxControl::SetForegroundColour(col) )
 
206
        return false;
 
207
 
 
208
    ::SendMessage(GetHwnd(), PBM_SETBARCOLOR, 0, (LPARAM)wxColourToRGB(col));
 
209
 
 
210
    return true;
 
211
}
 
212
 
 
213
bool wxGauge95::SetBackgroundColour(const wxColour& col)
 
214
{
 
215
    if ( !wxControl::SetBackgroundColour(col) )
 
216
        return false;
 
217
 
 
218
    ::SendMessage(GetHwnd(), PBM_SETBKCOLOR, 0, (LPARAM)wxColourToRGB(col));
 
219
 
 
220
    return true;
 
221
}
 
222
 
 
223
#endif // wxUSE_GAUGE
 
224