⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gauge.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        gauge.cpp// Purpose:     wxGauge class// Author:      Stefan Csomor// Modified by:// Created:     1998-01-01// RCS-ID:      $Id: gauge.cpp,v 1.33 2006/09/09 18:11:42 KO Exp $// Copyright:   (c) Stefan Csomor// Licence:       wxWindows licence/////////////////////////////////////////////////////////////////////////////#include "wx/wxprec.h"#if wxUSE_GAUGE #include "wx/gauge.h"IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl)#include "wx/mac/uma.h"bool wxGauge::Create( wxWindow *parent,    wxWindowID id,    int range,    const wxPoint& pos,    const wxSize& s,    long style,    const wxValidator& validator,    const wxString& name ){    m_macIsUserPane = false;    if ( !wxGaugeBase::Create( parent, id, range, pos, s, style & 0xE0FFFFFF, validator, name ) )        return false;    wxSize size = s;#if 0    if (size.x == wxDefaultCoord && size.y == wxDefaultCoord)        size = wxSize( 200 , 16 );#endif    Rect bounds = wxMacGetBoundsForControl( this, pos, size );    m_peer = new wxMacControl( this );    OSStatus err = CreateProgressBarControl(        MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds,        GetValue(), 0, GetRange(), false /* not indeterminate */, m_peer->GetControlRefAddr() );    verify_noerr( err );    if ( GetValue() == 0 )        m_peer->SetData<Boolean>( kControlEntireControl, kControlProgressBarAnimatingTag, (Boolean)false );    MacPostControlCreate( pos, size );        return true;}void wxGauge::SetRange(int r){    // we are going via the base class in case there is     // some change behind the values by it    wxGaugeBase::SetRange( r ) ;    if ( m_peer && m_peer->Ok() ){        // switch back to determinate mode if not there already         if ( m_peer->GetData<Boolean>( kControlNoPart, kControlProgressBarIndeterminateTag ) != false )        {             m_peer->SetData<Boolean>( kControlNoPart, kControlProgressBarIndeterminateTag, (Boolean)false );        }            m_peer->SetMaximum( GetRange() ) ;    }}void wxGauge::SetValue(int pos){    // we are going via the base class in case there is     // some change behind the values by it    wxGaugeBase::SetValue( pos ) ;    if ( m_peer && m_peer->Ok() )    {        // switch back to determinate mode if not there already         if ( m_peer->GetData<Boolean>( kControlNoPart, kControlProgressBarIndeterminateTag ) != false )        {            m_peer->SetData<Boolean>( kControlNoPart, kControlProgressBarIndeterminateTag, (Boolean)false );        }            m_peer->SetValue( GetValue() ) ;        // turn off animation in the unnecessary situations as this is consuming a lot of CPU otherwise        Boolean shouldAnimate = ( GetValue() > 0 && GetValue() < GetRange() ) ;        if ( m_peer->GetData<Boolean>( kControlEntireControl, kControlProgressBarAnimatingTag ) != shouldAnimate )        {            m_peer->SetData<Boolean>( kControlEntireControl, kControlProgressBarAnimatingTag, shouldAnimate ) ;            if ( !shouldAnimate )                Refresh() ;        }    }}int wxGauge::GetValue() const{#if 0    if ( m_peer && m_peer->Ok() )        return m_peer->GetValue() ;#endif    return m_gaugePos ;}void wxGauge::Pulse(){    if ( m_peer && m_peer->Ok() )    {        if ( m_peer->GetData<Boolean>( kControlNoPart, kControlProgressBarIndeterminateTag ) != true )        {        m_peer->SetData<Boolean>( kControlNoPart, kControlProgressBarIndeterminateTag, true);         }                if ( m_peer->GetData<Boolean>( kControlEntireControl, kControlProgressBarAnimatingTag ) != true )        {            m_peer->SetData<Boolean>( kControlEntireControl, kControlProgressBarAnimatingTag, true ) ;        }    }}#endif // wxUSE_GAUGE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -