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 CProgressCtrl
di , vedere Controlli e uso di CProgressCtrl
.
Gerarchia di ereditarietà
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 corsoPBST_ERROR
-ErrorePBST_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();