Sdílet prostřednictvím


CProgressCtrl Třída

Poskytuje funkce běžného ovládacího prvku indikátoru průběhu Windows.

Syntaxe

class CProgressCtrl : public CWnd

Členové

Veřejné konstruktory

Název Popis
CProgressCtrl::CProgressCtrl CProgressCtrl Vytvoří objekt.

Veřejné metody

Název Popis
CProgressCtrl::Create Vytvoří ovládací prvek indikátoru průběhu a připojí ho k objektu CProgressCtrl .
CProgressCtrl::CreateEx Vytvoří ovládací prvek průběhu se zadanými rozšířenými styly Windows a připojí ho k objektu CProgressCtrl .
CProgressCtrl::GetBarColor Získá barvu indikátoru průběhu pro aktuální ovládací prvek indikátoru průběhu.
CProgressCtrl::GetBkColor Získá barvu pozadí aktuálního indikátoru průběhu.
CProgressCtrl::GetPos Získá aktuální pozici indikátoru průběhu.
CProgressCtrl::GetRange Získá dolní a horní limity rozsahu ovládacího prvku indikátoru průběhu.
CProgressCtrl::GetState Získá stav aktuálního ovládacího prvku indikátoru průběhu.
CProgressCtrl::GetStep Načte krok inkrementace indikátoru průběhu aktuálního ovládacího prvku indikátoru průběhu.
CProgressCtrl::OffsetPos Posune aktuální pozici ovládacího prvku indikátoru průběhu o zadaný přírůstek a překreslí pruh tak, aby odrážel novou pozici.
CProgressCtrl::SetBarColor Nastaví barvu indikátoru průběhu v aktuálním ovládacím prvku indikátoru průběhu.
CProgressCtrl::SetBkColor Nastaví barvu pozadí indikátoru průběhu.
CProgressCtrl::SetMarquee Zapne nebo vypne režim výběru pro aktuální ovládací prvek indikátoru průběhu.
CProgressCtrl::SetPos Nastaví aktuální pozici ovládacího prvku indikátoru průběhu a překreslí pruh tak, aby odrážel novou pozici.
CProgressCtrl::SetRange Nastaví minimální a maximální rozsahy pro ovládací prvek indikátoru průběhu a překreslí pruh tak, aby odrážel nové rozsahy.
CProgressCtrl::SetState Nastaví stav aktuálního ovládacího prvku indikátoru průběhu.
CProgressCtrl::SetStep Určuje přírůstek kroku pro ovládací prvek indikátoru průběhu.
CProgressCtrl::StepIt Posune aktuální pozici pro ovládací prvek indikátoru průběhu o krok přírůstku (viz SetStep) a překreslí pruh tak, aby odrážel novou pozici.

Poznámky

Ovládací prvek indikátoru průběhu je okno, které může aplikace použít k označení průběhu zdlouhavé operace. Skládá se z obdélníku, který je postupně vyplněný zleva doprava, s barvou zvýraznění systému při průběhu operace.

Ovládací prvek indikátoru průběhu má rozsah a aktuální pozici. Rozsah představuje celkovou dobu trvání operace a aktuální pozice představuje průběh, který aplikace provedla k dokončení operace. Procedura okna používá oblast a aktuální pozici k určení procenta indikátoru průběhu k vyplnění barvou zvýraznění. Vzhledem k tomu, že se hodnoty rozsahu a aktuální pozice vyjadřují jako celá čísla se signy, je možný rozsah hodnot aktuální pozice od -2 147 483 648 do 2 147 483 647 včetně.

Další informace o použití CProgressCtrlnaleznete v tématu Ovládací prvky a použití CProgressCtrl.

Hierarchie dědičnosti

CObject

CCmdTarget

CWnd

CProgressCtrl

Požadavky

Záhlaví: afxcmn.h

CProgressCtrl::CProgressCtrl

CProgressCtrl Vytvoří objekt.

CProgressCtrl();

Poznámky

Po vytvoření objektu CProgressCtrl voláním CProgressCtrl::Create vytvořte ovládací prvek indikátoru průběhu.

Příklad

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

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

CProgressCtrl::Create

Vytvoří ovládací prvek indikátoru průběhu a připojí ho k objektu CProgressCtrl .

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

Parametry

dwStyle
Určuje styl ovládacího prvku indikátoru průběhu. U ovládacího prvku použijte libovolnou kombinaci stylů oken, které jsou přiřazené v CreateWindow sadě Windows SDK, kromě následujících stylů ovládacích prvků indikátoru průběhu:

  • PBS_VERTICAL Zobrazí informace o průběhu svisle, shora dolů. Bez tohoto příznaku se ovládací prvek indikátoru průběhu zobrazuje vodorovně a zleva doprava.

  • PBS_SMOOTH Zobrazí postupné a hladké vyplňování ovládacího prvku indikátoru průběhu. Bez tohoto příznaku ovládací prvek vyplní bloky.

rect
Určuje velikost a umístění ovládacího prvku indikátoru průběhu. Může to být CRect objekt nebo RECT struktura. Vzhledem k tomu, že ovládací prvek musí být podřízeným oknem, jsou zadané souřadnice relativní k klientské oblasti objektu pParentWnd.

pParentWnd
Určuje nadřazené okno ovládacího prvku indikátoru průběhu, obvykle .CDialog Nesmí mít hodnotu NULL.

nID
Určuje ID ovládacího prvku indikátoru průběhu.

Návratová hodnota

TRUE, pokud CProgressCtrl je objekt úspěšně vytvořen; jinak NEPRAVDA.

Poznámky

Objekt vytvoříte CProgressCtrl ve dvou krocích. Nejprve zavolejte konstruktor, který vytvoří CProgressCtrl objekt, a potom volání Create, který vytvoří ovládací prvek indikátoru průběhu.

Příklad

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

Vytvoří ovládací prvek (podřízené okno) a přidruží ho k objektu CProgressCtrl .

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

Parametry

dwExStyle
Určuje rozšířený styl vytvářeného ovládacího prvku. Seznam rozšířených stylů Windows najdete v parametru dwExStyle sady CreateWindowEx Windows SDK.

dwStyle
Určuje styl ovládacího prvku indikátoru průběhu. Použijte libovolnou kombinaci stylů oken popsaných v CreateWindow sadě Windows SDK.

rect
Odkaz na RECT strukturu popisující velikost a umístění okna, které se má vytvořit, v souřadnicích pParentWndklienta .

pParentWnd
Ukazatel na okno, které je nadřazeným objektem ovládacího prvku.

nID
ID podřízeného okna ovládacího prvku.

Návratová hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Create Místo CreateEx použití rozšířených stylů Windows určených předmětu WS_EX_rozšířeného stylu Windows .

CProgressCtrl::GetBarColor

Získá barvu indikátoru průběhu pro aktuální ovládací prvek indikátoru průběhu.

COLORREF GetBarColor() const;

Návratová hodnota

Barva aktuálního indikátoru průběhu, reprezentovaná jako COLORREF hodnota nebo CLR_DEFAULT pokud je barva indikátoru průběhu výchozí barvou.

Poznámky

Tato metoda odešle PBM_GETBARCOLOR zprávu popsanou v sadě Windows SDK.

CProgressCtrl::GetBkColor

Získá barvu pozadí aktuálního indikátoru průběhu.

COLORREF GetBkColor() const;

Návratová hodnota

Barva pozadí aktuálního indikátoru průběhu vyjádřená jako COLORREF hodnota

Poznámky

Tato metoda odešle PBM_GETBKCOLOR zprávu popsanou v sadě Windows SDK.

CProgressCtrl::GetPos

Načte aktuální pozici indikátoru průběhu.

int GetPos();

Návratová hodnota

Pozice ovládacího prvku indikátoru průběhu.

Poznámky

Umístění ovládacího prvku indikátoru průběhu není fyzické umístění na obrazovce, ale je mezi horním a dolním rozsahem uvedeným v SetRange.

Příklad

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

Získá aktuální dolní a horní limity nebo rozsah ovládacího prvku indikátoru průběhu.

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

Parametry

nLower
Odkaz na celé číslo, které přijímá dolní limit ovládacího prvku indikátoru průběhu.

nUpper
Odkaz na celé číslo, které přijímá horní limit ovládacího prvku indikátoru průběhu.

Poznámky

Tato funkce zkopíruje hodnoty dolních a horních limitů na celá čísla, na která nLower odkazuje a nUpperv uvedeném pořadí.

Příklad

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

Získá stav aktuálního ovládacího prvku indikátoru průběhu.

int GetState() const;

Návratová hodnota

Stav aktuálního ovládacího prvku indikátoru průběhu, což je jedna z následujících hodnot:

Hodnota Stát
PBST_NORMAL Rozpracované
PBST_ERROR Chyba
PBST_PAUSED Pozastaveno

Poznámky

Tato metoda odešle PBM_GETSTATE zprávu popsanou v sadě Windows SDK.

Příklad

První příklad kódu definuje proměnnou, m_progressCtrlkterá se používá pro programový přístup k ovládacímu prvku indikátoru průběhu. Tato proměnná se používá v dalším příkladu.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

Následující příklad kódu načte stav aktuálního ovládacího prvku indikátoru průběhu.

// 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

Načte krok inkrementace indikátoru průběhu aktuálního ovládacího prvku indikátoru průběhu.

int GetStep() const;

Návratová hodnota

Krok inkrementace indikátoru průběhu

Poznámky

Zvýšení kroku je množství, o které volání CProgressCtrl::StepIt zvýší aktuální pozici indikátoru průběhu.

Tato metoda odešle PBM_GETSTEP zprávu popsanou v sadě Windows SDK.

Příklad

První příklad kódu definuje proměnnou, m_progressCtrlkterá se používá pro programový přístup k ovládacímu prvku indikátoru průběhu. Tato proměnná se používá v dalším příkladu.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

Další příklad kódu načte krok přírůstku aktuálního ovládacího prvku indikátoru průběhu.

// 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

Posune aktuální pozici ovládacího prvku indikátoru průběhu o přírůstek určený nPos a překreslí pruh tak, aby odrážel novou pozici.

int OffsetPos(int nPos);

Parametry

nPos
Částka pro posun pozice.

Návratová hodnota

Předchozí pozice ovládacího prvku indikátoru průběhu.

Příklad

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

Nastaví barvu indikátoru průběhu v aktuálním ovládacím prvku indikátoru průběhu.

COLORREF SetBarColor(COLORREF clrBar);

Parametry

clrBar
[v] Hodnota COLORREF , která určuje novou barvu indikátoru průběhu. Zadejte CLR_DEFAULT , aby indikátor průběhu používal výchozí barvu.

Návratová hodnota

Předchozí barva indikátoru průběhu, reprezentovaná jako COLORREF hodnota nebo CLR_DEFAULT pokud je barva indikátoru průběhu výchozí barvou.

Poznámky

Metoda SetBarColor nastaví barvu indikátoru průběhu pouze v případě, že se motiv systému Windows Vista nepoužívá.

Tato metoda odešle PBM_SETBARCOLOR zprávu popsanou v sadě Windows SDK.

Příklad

První příklad kódu definuje proměnnou, m_progressCtrlkterá se používá pro programový přístup k ovládacímu prvku indikátoru průběhu. Tato proměnná se používá v dalším příkladu.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

Následující příklad kódu změní barvu indikátoru průběhu na červenou, zelenou, modrou nebo výchozí.

// 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

Nastaví barvu pozadí indikátoru průběhu.

COLORREF SetBkColor(COLORREF clrNew);

Parametry

clrNew
Hodnota COLORREF , která určuje novou barvu pozadí. CLR_DEFAULT Zadejte hodnotu, která má použít výchozí barvu pozadí pro indikátor průběhu.

Návratová hodnota

Hodnota COLORREF označující předchozí barvu pozadí nebo CLR_DEFAULT pokud je výchozí barva pozadí.

Příklad

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

Zapne nebo vypne režim výběru pro aktuální ovládací prvek indikátoru průběhu.

BOOL SetMarquee(
    BOOL fMarqueeMode,
    int nInterval);

Parametry

fMarqueeMode
[v] TRUE pokud chcete režim výběru zapnout nebo FALSE vypnout režim výběru.

nInterval
[v] Čas v milisekundách mezi aktualizacemi animace ohraničení

Návratová hodnota

Tato metoda vždy vrátí TRUE.

Poznámky

Když je zapnutý režim ohraničení, indikátor průběhu je animovaný a posunuje se jako symbol na kino.

Tato metoda odešle PBM_SETMARQUEE zprávu popsanou v sadě Windows SDK.

Příklad

První příklad kódu definuje proměnnou, m_progressCtrlkterá se používá pro programový přístup k ovládacímu prvku indikátoru průběhu. Tato proměnná se používá v dalším příkladu.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

Následující příklad kódu se spustí a zastaví animaci posouvání v oblasti.

// 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

Nastaví aktuální pozici ovládacího prvku indikátoru průběhu podle zadání nPos a překreslí pruh tak, aby odrážel novou pozici.

int SetPos(int nPos);

Parametry

nPos
Nová pozice ovládacího prvku indikátoru průběhu

Návratová hodnota

Předchozí pozice ovládacího prvku indikátoru průběhu.

Poznámky

Umístění ovládacího prvku indikátoru průběhu není fyzické umístění na obrazovce, ale je mezi horním a dolním rozsahem uvedeným v SetRange.

Příklad

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

Nastaví horní a dolní limity rozsahu indikátoru průběhu a překreslí pruh tak, aby odrážel nové rozsahy.

void SetRange(
    short nLower,
    short nUpper);

void SetRange32(
    int nLower,
    int nUpper);

Parametry

nLower
Určuje dolní limit rozsahu (výchozí hodnota je nula).

nUpper
Určuje horní limit rozsahu (výchozí hodnota je 100).

Poznámky

Členová funkce SetRange32 nastaví 32bitový rozsah pro ovládací prvek průběhu.

Příklad

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

Nastaví stav aktuálního ovládacího prvku indikátoru průběhu.

int SetState(int iState);

Parametry

iState
[v] Stav pro nastavení indikátoru průběhu Použijte jednu z následujících hodnot:

  • PBST_NORMAL - Probíhá
  • PBST_ERROR -Chyba
  • PBST_PAUSED -Pozastaveno

Návratová hodnota

Předchozí stav aktuálního ovládacího prvku indikátoru průběhu.

Poznámky

Tato metoda odešle PBM_SETSTATE zprávu popsanou v sadě Windows SDK.

Příklad

První příklad kódu definuje proměnnou, m_progressCtrlkterá se používá pro programový přístup k ovládacímu prvku indikátoru průběhu. Tato proměnná se používá v dalším příkladu.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

Následující příklad kódu nastaví stav aktuálního ovládacího prvku indikátoru průběhu na Pozastaveno nebo Probíhá.

// 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

Určuje přírůstek kroku pro ovládací prvek indikátoru průběhu.

int SetStep(int nStep);

Parametry

nStep
Nový krok se zvýší.

Návratová hodnota

Předchozí krok se zvýší.

Poznámky

Přírůstek kroku je množství, o které volání zvýší CProgressCtrl::StepIt aktuální pozici indikátoru průběhu.

Výchozí přírůstek kroku je 10.

Příklad

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

Posune aktuální pozici ovládacího prvku indikátoru průběhu o krok a překreslí pruh tak, aby odrážel novou pozici.

int StepIt();

Návratová hodnota

Předchozí pozice ovládacího prvku indikátoru průběhu.

Poznámky

Krok přírůstku nastaví CProgressCtrl::SetStep členová funkce.

Příklad

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();

Viz také

Mfc – ukázka CMNCTRL2
CWnd Třída
Graf hierarchie