X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/da87a1ca42a81c7b7b69cb013eb52d09cd5c1b70..cb73e6001f891ae46b12a1e4ca39b93649cb6099:/src/msw/gauge95.cpp?ds=sidebyside diff --git a/src/msw/gauge95.cpp b/src/msw/gauge95.cpp index 6a2f7c668f..4862f9d249 100644 --- a/src/msw/gauge95.cpp +++ b/src/msw/gauge95.cpp @@ -1,16 +1,24 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: gauge95.cpp +// Name: src/msw/gauge95.cpp // Purpose: wxGauge95 class // Author: Julian Smart // Modified by: // Created: 01/02/97 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "gauge95.h" +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) + #pragma implementation "gauge95.h" #endif // For compilers that support precompilation, includes "wx.h". @@ -21,71 +29,128 @@ #endif #ifndef WX_PRECOMP -#include "wx/defs.h" + #include "wx/defs.h" #endif -#if USE_GAUGE && defined(__WIN95__) +#if wxUSE_GAUGE && defined(__WIN95__) #include "wx/msw/gauge95.h" #include "wx/msw/private.h" -#if defined(__WIN95__) && !defined(__GNUWIN32__) -#include +#if defined(__WIN95__) && !(defined(__GNUWIN32_OLD__) && !defined(__CYGWIN10__)) + #include +#endif + +// ---------------------------------------------------------------------------- +// constants +// ---------------------------------------------------------------------------- + +// old commctrl.h (< 4.71) don't have those +#ifndef PBS_SMOOTH + #define PBS_SMOOTH 0x01 +#endif + +#ifndef PBS_VERTICAL + #define PBS_VERTICAL 0x04 #endif -#if !USE_SHARED_LIBRARY +#ifndef PBM_SETBARCOLOR + #define PBM_SETBARCOLOR (WM_USER+9) +#endif + +#ifndef PBM_SETBKCOLOR + #define PBM_SETBKCOLOR 0x2001 +#endif + +// ---------------------------------------------------------------------------- +// wxWin macros +// ---------------------------------------------------------------------------- + +#if wxUSE_EXTENDED_RTTI +IMPLEMENT_DYNAMIC_CLASS_XTI(wxGauge, wxControl,"wx/gauge.h") + +WX_BEGIN_PROPERTIES_TABLE(wxGauge95) + WX_PROPERTY( Value , int , SetValue, GetValue, 0 ) + WX_PROPERTY( Range , int , SetRange, GetRange, 0 ) + WX_PROPERTY( ShadowWidth , int , SetShadowWidth, GetShadowWidth, 0 ) + WX_PROPERTY( BezelFace , int , SetBezelFace, GetBezelFace, 0 ) +/* + TODO PROPERTIES + style wxGA_HORIZONTAL +*/ +WX_END_PROPERTIES_TABLE() + +WX_BEGIN_HANDLERS_TABLE(wxGauge95) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_6( wxGauge95 , wxWindow* , Parent , wxWindowID , Id , int , Range , wxPoint , Position , wxSize , Size , long , WindowStyle ) +#else IMPLEMENT_DYNAMIC_CLASS(wxGauge95, wxControl) #endif -bool wxGauge95::Create(wxWindow *parent, const wxWindowID id, - const int range, +// ============================================================================ +// implementation +// ============================================================================ + +bool wxGauge95::Create(wxWindow *parent, wxWindowID id, + int range, const wxPoint& pos, const wxSize& size, - const long style, + long style, const wxValidator& validator, const wxString& name) { SetName(name); +#if wxUSE_VALIDATORS SetValidator(validator); +#endif // wxUSE_VALIDATORS if (parent) parent->AddChild(this); m_rangeMax = range; - - SetBackgroundColour(parent->GetDefaultBackgroundColour()) ; - SetForegroundColour(parent->GetDefaultForegroundColour()) ; + m_gaugePos = 0; m_windowStyle = style; if ( id == -1 ) - m_windowId = (int)NewControlId(); + m_windowId = (int)NewControlId(); else - m_windowId = id; + m_windowId = id; int x = pos.x; int y = pos.y; int width = size.x; int height = size.y; - long msFlags = WS_CHILD | WS_VISIBLE | WS_TABSTOP; + WXDWORD exStyle = 0; + long msFlags = MSWGetStyle(style, & exStyle) ; + + if (m_windowStyle & wxGA_VERTICAL) + msFlags |= PBS_VERTICAL; + + if (m_windowStyle & wxGA_SMOOTH) + msFlags |= PBS_SMOOTH; HWND wx_button = - CreateWindowEx(MakeExtendedStyle(m_windowStyle), PROGRESS_CLASS, NULL, msFlags, + CreateWindowEx(exStyle, PROGRESS_CLASS, NULL, msFlags, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); m_hWnd = (WXHWND)wx_button; + SetBackgroundColour(parent->GetBackgroundColour()); + SetForegroundColour(parent->GetForegroundColour()); + // Subclass again for purposes of dialog editing mode SubclassWin((WXHWND) wx_button); SendMessage((HWND) GetHWND(), PBM_SETRANGE, 0, MAKELPARAM(0, range)); - SetFont(* parent->GetFont()); + SetFont(parent->GetFont()); if (width == -1) width = 50; if (height == -1) - height = 50; + height = 28; SetSize(x, y, width, height); ShowWindow((HWND) GetHWND(), SW_SHOW); @@ -93,94 +158,66 @@ bool wxGauge95::Create(wxWindow *parent, const wxWindowID id, return TRUE; } -void wxGauge95::SetSize(const int x, const int y, const int width, const int height, const int sizeFlags) +void wxGauge95::SetShadowWidth(int WXUNUSED(w)) { - int currentX, currentY; - GetPosition(¤tX, ¤tY); - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - // If we're prepared to use the existing size, then... - if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) - { - GetSize(&w1, &h1); - } - - // Deal with default size (using -1 values) - if (w1<=0) - w1 = DEFAULT_ITEM_WIDTH; - - if (h1<=0) - h1 = DEFAULT_ITEM_HEIGHT; - - MoveWindow((HWND) GetHWND(), x1, y1, w1, h1, TRUE); - -#if WXWIN_COMPATIBILITY - GetEventHandler()->OldOnSize(width, height); -#else - wxSizeEvent event(wxSize(width, height), m_windowId); - event.eventObject = this; - GetEventHandler()->ProcessEvent(event); -#endif } -void wxGauge95::SetShadowWidth(const int w) +void wxGauge95::SetBezelFace(int WXUNUSED(w)) { } -void wxGauge95::SetBezelFace(const int w) -{ -} - -void wxGauge95::SetRange(const int r) +void wxGauge95::SetRange(int r) { m_rangeMax = r; SendMessage((HWND) GetHWND(), PBM_SETRANGE, 0, MAKELPARAM(0, r)); } -void wxGauge95::SetValue(const int pos) +void wxGauge95::SetValue(int pos) { m_gaugePos = pos; SendMessage((HWND) GetHWND(), PBM_SETPOS, pos, 0); } -int wxGauge95::GetShadowWidth(void) const +int wxGauge95::GetShadowWidth() const { return 0; } -int wxGauge95::GetBezelFace(void) const +int wxGauge95::GetBezelFace() const { return 0; } -int wxGauge95::GetRange(void) const +int wxGauge95::GetRange() const { return m_rangeMax; } -int wxGauge95::GetValue(void) const +int wxGauge95::GetValue() const { return m_gaugePos; } -void wxGauge95::SetForegroundColour(const wxColour& col) +bool wxGauge95::SetForegroundColour(const wxColour& col) { - m_foregroundColour = col ; + if ( !wxControl::SetForegroundColour(col) ) + return FALSE; + + SendMessage(GetHwnd(), PBM_SETBARCOLOR, 0, (LPARAM)wxColourToRGB(col)); + + return TRUE; } -void wxGauge95::SetBackgroundColour(const wxColour& col) +bool wxGauge95::SetBackgroundColour(const wxColour& col) { - m_backgroundColour = col ; + if ( !wxControl::SetBackgroundColour(col) ) + return FALSE; + + SendMessage(GetHwnd(), PBM_SETBKCOLOR, 0, (LPARAM)wxColourToRGB(col)); + + return TRUE; } -#endif // USE_GAUGE +#endif // wxUSE_GAUGE