Condividi tramite


Classe CProgressCtrl

Fornisce la funzionalità del controllo indicatore di stato comune di Windows.

Sintassi

class CProgressCtrl : public CWnd

Membri

Costruttori pubblici

Nome Descrizione
CProgressCtrl::CProgressCtrl Costruisce un oggetto CProgressCtrl.

Metodi pubblici

Nome Descrizione
CProgressCtrl::Create Crea un controllo indicatore di stato e lo collega a un CProgressCtrl oggetto .
CProgressCtrl::CreateEx Crea un controllo di stato con gli stili estesi di Windows specificati e lo associa a un CProgressCtrl oggetto .
CProgressCtrl::GetBarColor Ottiene il colore della barra dell'indicatore di stato per il controllo indicatore di stato corrente.
CProgressCtrl::GetBkColor Ottiene il colore di sfondo della barra di stato corrente.
CProgressCtrl::GetPos Ottiene la posizione corrente dell'indicatore di stato.
CProgressCtrl::GetRange Ottiene i limiti inferiori e superiori dell'intervallo del controllo indicatore di stato.
CProgressCtrl::GetState Ottiene lo stato del controllo indicatore di stato corrente.
CProgressCtrl::GetStep Recupera l'incremento del passaggio per la barra di stato del controllo indicatore di stato corrente.
CProgressCtrl::OffsetPos Sposta in avanti la posizione corrente di un controllo indicatore di stato in base a un incremento specificato e ridisegna la barra in modo da riflettere la nuova posizione.
CProgressCtrl::SetBarColor Imposta il colore della barra dell'indicatore di stato nel controllo indicatore di stato corrente.
CProgressCtrl::SetBkColor Imposta il colore di sfondo per la barra di stato.
CProgressCtrl::SetMarquee Attiva o disattiva la modalità di selezione per il controllo indicatore di stato corrente.
CProgressCtrl::SetPos Imposta la posizione corrente per un controllo indicatore di stato e ridisegna la barra in modo da riflettere la nuova posizione.
CProgressCtrl::SetRange Imposta gli intervalli minimo e massimo per un controllo indicatore di stato e ridisegna la barra in modo da riflettere i nuovi intervalli.
CProgressCtrl::SetState Imposta lo stato del controllo indicatore di stato corrente.
CProgressCtrl::SetStep Specifica l'incremento del passaggio per un controllo indicatore di stato.
CProgressCtrl::StepIt Sposta in avanti la posizione corrente per un controllo indicatore di stato in base all'incremento del passaggio (vedere SetStep) e ridisegna la barra per riflettere la nuova posizione.

Osservazioni:

Un controllo indicatore di stato è una finestra che un'applicazione può usare per indicare lo stato di avanzamento di un'operazione lunga. È costituito da un rettangolo che viene gradualmente riempito, da sinistra a destra, con il colore di evidenziazione del sistema durante l'avanzamento di un'operazione.

Un controllo indicatore di stato ha un intervallo e una posizione corrente. L'intervallo rappresenta la durata totale dell'operazione e la posizione corrente rappresenta lo stato di avanzamento dell'applicazione verso il completamento dell'operazione. La routine della finestra utilizza l'intervallo e la posizione corrente per determinare la percentuale della barra di stato da riempire con il colore di evidenziazione. Poiché i valori di intervallo e posizione corrente sono espressi come interi con segno, l'intervallo possibile di valori di posizione corrente è compreso tra -2.147.483.648 e 2.147.483.647 inclusi.

Per altre informazioni sull'uso CProgressCtrldi , vedere Controlli e uso di CProgressCtrl.

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

CProgressCtrl

Requisiti

Intestazione: afxcmn.h

CProgressCtrl::CProgressCtrl

Costruisce un oggetto CProgressCtrl.

CProgressCtrl();

Osservazioni:

Dopo aver costruito l'oggetto CProgressCtrl , chiamare CProgressCtrl::Create per creare il controllo indicatore di stato.

Esempio

// Create a progress control object on the stack.
CProgressCtrl myCtrl;

// Create a progress control object on the heap.
CProgressCtrl *pmyCtrl = new CProgressCtrl;

CProgressCtrl::Create

Crea un controllo indicatore di stato e lo collega a un CProgressCtrl oggetto .

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parametri

dwStyle
Specifica lo stile del controllo indicatore di stato. Applicare qualsiasi combinazione di stili di finestra inseriti in CreateWindow Windows SDK, oltre agli stili di controllo barra di stato seguenti, al controllo :

  • PBS_VERTICAL Visualizza le informazioni sullo stato di avanzamento verticalmente, dall'alto verso il basso. Senza questo flag, il controllo indicatore di stato viene visualizzato orizzontalmente, da sinistra a destra.

  • PBS_SMOOTH Visualizza un riempimento graduale e uniforme nel controllo indicatore di stato. Senza questo flag, il controllo riempirà i blocchi.

rect
Specifica le dimensioni e la posizione del controllo indicatore di stato. Può essere un CRect oggetto o una RECT struttura. Poiché il controllo deve essere una finestra figlio, le coordinate specificate sono relative all'area client di pParentWnd.

pParentWnd
Specifica la finestra padre del controllo indicatore di stato, in genere un oggetto CDialog. Non deve essere NULL.

nID
Specifica l'ID del controllo indicatore di stato.

Valore restituito

TRUE se l'oggetto CProgressCtrl viene creato correttamente; in caso contrario, FALSE.

Osservazioni:

Si costruisce un CProgressCtrl oggetto in due passaggi. Chiamare innanzitutto il costruttore , che crea l'oggetto CProgressCtrl e quindi chiamare Create, che crea il controllo indicatore di stato.

Esempio

CProgressCtrl myCtrl;

// Create a smooth child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH, CRect(10, 10, 200, 30),
              pParentWnd, IDC_PROGRESSCTRL);

CProgressCtrl::CreateEx

Crea un controllo (una finestra figlio) e lo associa all'oggetto CProgressCtrl .

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parametri

dwExStyle
Specifica lo stile esteso del controllo da creare. Per un elenco degli stili di Windows estesi, vedi il dwExStyle parametro per CreateWindowEx in Windows SDK.

dwStyle
Specifica lo stile del controllo indicatore di stato. Applicare qualsiasi combinazione di stili di finestra descritti in CreateWindow Windows SDK.

rect
Riferimento a una RECT struttura che descrive le dimensioni e la posizione della finestra da creare, nelle coordinate client di pParentWnd.

pParentWnd
Puntatore alla finestra padre del controllo.

nID
ID finestra figlio del controllo.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Usare CreateEx invece di Create applicare stili di Windows estesi, specificati dalla prefazione WS_EX_dello stile esteso di Windows.

CProgressCtrl::GetBarColor

Ottiene il colore della barra dell'indicatore di stato per il controllo indicatore di stato corrente.

COLORREF GetBarColor() const;

Valore restituito

Colore della barra di stato corrente, rappresentato come COLORREF valore o CLR_DEFAULT se il colore della barra dell'indicatore di stato è il colore predefinito.

Osservazioni:

Questo metodo invia il PBM_GETBARCOLOR messaggio, descritto in Windows SDK.

CProgressCtrl::GetBkColor

Ottiene il colore di sfondo della barra di stato corrente.

COLORREF GetBkColor() const;

Valore restituito

Colore di sfondo della barra di stato corrente, rappresentata come COLORREF valore.

Osservazioni:

Questo metodo invia il PBM_GETBKCOLOR messaggio, descritto in Windows SDK.

CProgressCtrl::GetPos

Recupera la posizione corrente dell'indicatore di stato.

int GetPos();

Valore restituito

Posizione del controllo indicatore di stato.

Osservazioni:

La posizione del controllo indicatore di stato non è la posizione fisica sullo schermo, ma è piuttosto compresa tra l'intervallo superiore e quello inferiore indicato in SetRange.

Esempio

CProgressCtrl myCtrl;

// Create a child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 30), pParentWnd,
              IDC_PROGRESSCTRL);

// Set the new position to half of the current position.
myCtrl.SetPos(myCtrl.GetPos() / 2);

CProgressCtrl::GetRange

Ottiene i limiti inferiori e superiori correnti, o intervallo, del controllo indicatore di stato.

void GetRange(
    int& nLower,
    int& nUpper);

Parametri

nLower
Riferimento a un numero intero che riceve il limite inferiore del controllo indicatore di stato.

nUpper
Riferimento a un numero intero che riceve il limite superiore del controllo indicatore di stato.

Osservazioni:

Questa funzione copia i valori dei limiti inferiori e superiori rispettivamente ai numeri interi a cui fa nLower riferimento e nUpper.

Esempio

CProgressCtrl myCtrl;

// Create a child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 30), pParentWnd,
              IDC_PROGRESSCTRL);

// Set the position to be one-fourth of the total range.
int nLower, nUpper;
myCtrl.GetRange(nLower, nUpper);
myCtrl.SetPos((nUpper - nLower) / 4);

CProgressCtrl::GetState

Ottiene lo stato del controllo indicatore di stato corrente.

int GetState() const;

Valore restituito

Stato del controllo indicatore di stato corrente, ovvero uno dei valori seguenti:

Valore Regione
PBST_NORMAL In corso
PBST_ERROR Error
PBST_PAUSED In pausa

Osservazioni:

Questo metodo invia il PBM_GETSTATE messaggio, descritto in Windows SDK.

Esempio

Il primo esempio di codice definisce la variabile , m_progressCtrl, usata per accedere a livello di codice al controllo barra di stato. Questa variabile viene usata nell'esempio riportato di seguito.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

Nell'esempio di codice successivo viene recuperato lo stato del controllo indicatore di stato corrente.

// Display the current state of the progress control.
CString str = _T("The progress control state is ");
int progState = m_progressCtrl.GetState();
if (progState == PBST_NORMAL)
   str += _T("NORMAL");
else if (progState == PBST_PAUSED)
   str += _T("PAUSED");
else if (progState == PBST_ERROR)
   str += _T("ERROR");
else
   str += _T("unknown");
AfxMessageBox(str, MB_ICONEXCLAMATION);

CProgressCtrl::GetStep

Recupera l'incremento del passaggio per la barra di stato del controllo indicatore di stato corrente.

int GetStep() const;

Valore restituito

Incremento del passaggio dell'indicatore di stato.

Osservazioni:

L'incremento del passaggio è l'importo in base al quale una chiamata a CProgressCtrl::StepIt aumenta la posizione corrente dell'indicatore di stato.

Questo metodo invia il PBM_GETSTEP messaggio, descritto in Windows SDK.

Esempio

Il primo esempio di codice definisce la variabile , m_progressCtrl, usata per accedere a livello di codice al controllo barra di stato. Questa variabile viene usata nell'esempio riportato di seguito.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

Nell'esempio di codice successivo viene recuperato l'incremento del passaggio del controllo indicatore di stato corrente.

// Get the step increment for the progress control.
CString str;
int incr = m_progressCtrl.GetStep();
str.Format(_T("The step increment is %d."), incr);
AfxMessageBox(str, MB_ICONEXCLAMATION);

CProgressCtrl::OffsetPos

Sposta in avanti la posizione corrente del controllo indicatore di stato in base all'incremento specificato da nPos e ridisegna la barra in modo da riflettere la nuova posizione.

int OffsetPos(int nPos);

Parametri

nPos
Quantità di avanzamento della posizione.

Valore restituito

Posizione precedente del controllo indicatore di stato.

Esempio

CProgressCtrl myCtrl;

// Create a child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 30), pParentWnd,
              IDC_PROGRESSCTRL);

// Offset the position by one-fourth of the total range.
int nLower, nUpper;
myCtrl.GetRange(nLower, nUpper);
myCtrl.OffsetPos((nUpper - nLower) / 4);

CProgressCtrl::SetBarColor

Imposta il colore della barra dell'indicatore di stato nel controllo indicatore di stato corrente.

COLORREF SetBarColor(COLORREF clrBar);

Parametri

clrBar
[in] Valore COLORREF che specifica il nuovo colore della barra dell'indicatore di stato. Specificare CLR_DEFAULT per fare in modo che la barra di stato usi il colore predefinito.

Valore restituito

Colore precedente della barra dell'indicatore di stato, rappresentato come COLORREF valore o CLR_DEFAULT se il colore della barra dell'indicatore di stato è il colore predefinito.

Osservazioni:

Il SetBarColor metodo imposta il colore della barra di stato solo se un tema di Windows Vista non è attivo.

Questo metodo invia il PBM_SETBARCOLOR messaggio, descritto in Windows SDK.

Esempio

Il primo esempio di codice definisce la variabile , m_progressCtrl, usata per accedere a livello di codice al controllo barra di stato. Questa variabile viene usata nell'esempio riportato di seguito.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

Nell'esempio di codice successivo il colore della barra di stato viene modificato in rosso, verde, blu o predefinito.

// Set the progress bar color to red, green, blue, or
// the system default. The SetBarColor method has an
// effect only if the Windows system theme is Classic.
void CCProgressCtrl_s1Dlg::OnSetbarcolorRed()
{
   m_progressCtrl.SetBarColor(RGB(255, 0, 0));
}

void CCProgressCtrl_s1Dlg::OnSetbarcolorGreen()
{
   m_progressCtrl.SetBarColor(RGB(0, 255, 0));
}

void CCProgressCtrl_s1Dlg::OnSetbarcolorBlue()
{
   m_progressCtrl.SetBarColor(RGB(0, 0, 255));
}

void CCProgressCtrl_s1Dlg::OnSetbarcolorOri()
{
   m_progressCtrl.SetBarColor(CLR_DEFAULT);
}

CProgressCtrl::SetBkColor

Imposta il colore di sfondo per la barra di stato.

COLORREF SetBkColor(COLORREF clrNew);

Parametri

clrNew
Valore COLORREF che specifica il nuovo colore di sfondo. Specificare il CLR_DEFAULT valore per usare il colore di sfondo predefinito per la barra di stato.

Valore restituito

Valore COLORREF che indica il colore di sfondo precedente o CLR_DEFAULT se il colore di sfondo è il colore predefinito.

Esempio

CProgressCtrl myCtrl;

// Create a smooth child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH, CRect(10, 10, 200, 30),
              pParentWnd, IDC_PROGRESSCTRL);

// Set the background color to red.
myCtrl.SetBkColor(RGB(255, 0, 0));

CProgressCtrl::SetMarquee

Attiva o disattiva la modalità di selezione per il controllo indicatore di stato corrente.

BOOL SetMarquee(
    BOOL fMarqueeMode,
    int nInterval);

Parametri

fMarqueeMode
[in] TRUE per attivare la modalità di selezione o FALSE per disattivare la modalità di selezione.

nInterval
[in] Tempo in millisecondi tra gli aggiornamenti dell'animazione di selezione.

Valore restituito

Questo metodo restituisce sempre TRUE.

Osservazioni:

Quando la modalità di selezione è attivata, la barra di stato viene animata e scorre come un segno su un riquadro teatrale.

Questo metodo invia il PBM_SETMARQUEE messaggio, descritto in Windows SDK.

Esempio

Il primo esempio di codice definisce la variabile , m_progressCtrl, usata per accedere a livello di codice al controllo barra di stato. Questa variabile viene usata nell'esempio riportato di seguito.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

L'esempio di codice successivo avvia e arresta l'animazione di scorrimento del riquadro di selezione.

// Turn the marquee animation on or off.
void CCProgressCtrl_s1Dlg::OnSetmarqueeOn()
{
   m_progressCtrl.SetMarquee(TRUE, nMarqueeInterval);
}

void CCProgressCtrl_s1Dlg::OnSetmarqueeOff()
{
   m_progressCtrl.SetMarquee(FALSE, nMarqueeInterval);
}

CProgressCtrl::SetPos

Imposta la posizione corrente del controllo indicatore di stato come specificato da nPos e ridisegna la barra in modo da riflettere la nuova posizione.

int SetPos(int nPos);

Parametri

nPos
Nuova posizione del controllo indicatore di stato.

Valore restituito

Posizione precedente del controllo indicatore di stato.

Osservazioni:

La posizione del controllo indicatore di stato non è la posizione fisica sullo schermo, ma è piuttosto compresa tra l'intervallo superiore e quello inferiore indicato in SetRange.

Esempio

CProgressCtrl myCtrl;

// Create a child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 30), pParentWnd,
              IDC_PROGRESSCTRL);

// Set the range to be 0 to 100.
myCtrl.SetRange(0, 100);

// Set the position to be half, 50.
myCtrl.SetPos(50);

CProgressCtrl::SetRange

Imposta i limiti superiori e inferiori dell'intervallo del controllo indicatore di stato e ridisegna la barra in modo da riflettere i nuovi intervalli.

void SetRange(
    short nLower,
    short nUpper);

void SetRange32(
    int nLower,
    int nUpper);

Parametri

nLower
Specifica il limite inferiore dell'intervallo (il valore predefinito è zero).

nUpper
Specifica il limite superiore dell'intervallo (il valore predefinito è 100).

Osservazioni:

La funzione SetRange32 membro imposta l'intervallo a 32 bit per il controllo di stato.

Esempio

CProgressCtrl myCtrl;

// Create a smooth child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH, CRect(10, 10, 200, 30),
              pParentWnd, IDC_PROGRESSCTRL);

// Set the range to be 0 to 100.
myCtrl.SetRange(0, 100);

CProgressCtrl::SetState

Imposta lo stato del controllo indicatore di stato corrente.

int SetState(int iState);

Parametri

iState
[in] Stato per impostare l'indicatore di stato. Utilizzare uno dei valori seguenti:

  • PBST_NORMAL -In corso
  • PBST_ERROR -Errore
  • PBST_PAUSED -Pausa

Valore restituito

Stato precedente del controllo indicatore di stato corrente.

Osservazioni:

Questo metodo invia il PBM_SETSTATE messaggio, descritto in Windows SDK.

Esempio

Il primo esempio di codice definisce la variabile , m_progressCtrl, usata per accedere a livello di codice al controllo barra di stato. Questa variabile viene usata nell'esempio riportato di seguito.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

Nell'esempio di codice successivo lo stato del controllo indicatore di stato corrente viene impostato su Sospeso o In corso.

// Set the progrees control to normal or paused state.
void CCProgressCtrl_s1Dlg::OnSetstateNormal()
{
   m_progressCtrl.SetState(PBST_NORMAL);
}

void CCProgressCtrl_s1Dlg::OnSetstatePaused()
{
   m_progressCtrl.SetState(PBST_PAUSED);
}

CProgressCtrl::SetStep

Specifica l'incremento del passaggio per un controllo indicatore di stato.

int SetStep(int nStep);

Parametri

nStep
Incremento del nuovo passaggio.

Valore restituito

Incremento del passaggio precedente.

Osservazioni:

L'incremento del passaggio è l'importo in base al quale una chiamata a CProgressCtrl::StepIt aumenta la posizione corrente dell'indicatore di stato.

L'incremento predefinito del passaggio è 10.

Esempio

CProgressCtrl myCtrl;

// Create a child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 30), pParentWnd,
              IDC_PROGRESSCTRL);

// Set the size to be 1/10 of the total range.
int nLower, nUpper;
myCtrl.GetRange(nLower, nUpper);
myCtrl.SetStep((nUpper - nLower) / 10);

CProgressCtrl::StepIt

Sposta in avanti la posizione corrente per un controllo indicatore di stato in base all'incremento del passaggio e ridisegna la barra in modo da riflettere la nuova posizione.

int StepIt();

Valore restituito

Posizione precedente del controllo indicatore di stato.

Osservazioni:

L'incremento del passaggio viene impostato dalla CProgressCtrl::SetStep funzione membro.

Esempio

CProgressCtrl myCtrl;

// Create a child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 30), pParentWnd,
              IDC_PROGRESSCTRL);

// Advance the position to the next step.
myCtrl.StepIt();

Vedi anche

Esempio MFC CMNCTRL2
CWnd Classe
Grafico della gerarchia