CProgressCtrl クラス

Windows コモン プログレス バー コントロールの機能が用意されています。

構文

class CProgressCtrl : public CWnd

メンバー

パブリック コンストラクター

名前 説明
CProgressCtrl::CProgressCtrl CProgressCtrl オブジェクトを構築します。

パブリック メソッド

名前 説明
CProgressCtrl::Create 進行状況バー コントロールを作成し、オブジェクトに CProgressCtrl アタッチします。
CProgressCtrl::CreateEx 指定した Windows 拡張スタイルを使用して進行状況コントロールを作成し、オブジェクトに CProgressCtrl アタッチします。
CProgressCtrl::GetBarColor 現在の進行状況バー コントロールの進行状況インジケーター バーの色を取得します。
CProgressCtrl::GetBkColor 現在の進行状況バーの背景色を取得します。
CProgressCtrl::GetPos 進行状況バーの現在位置を取得します。
CProgressCtrl::GetRange 進行状況バー コントロールの範囲の下限と上限を取得します。
CProgressCtrl::GetState 現在の進行状況バー コントロールの状態を取得します。
CProgressCtrl::GetStep 現在の進行状況バー コントロールの進行状況バーのステップ増分を取得します。
CProgressCtrl::OffsetPos 進行状況バー コントロールの現在位置を指定した増分だけ進め、新しい位置を反映するようにバーを再描画します。
CProgressCtrl::SetBarColor 現在の進行状況バー コントロールの進行状況インジケーター バーの色を設定します。
CProgressCtrl::SetBkColor 進行状況バーの背景色を設定します。
CProgressCtrl::SetMarquee 現在の進行状況バー コントロールのマーキー モードをオンまたはオフにします。
CProgressCtrl::SetPos 進行状況バー コントロールの現在位置を設定し、新しい位置を反映するようにバーを再描画します。
CProgressCtrl::SetRange 進行状況バー コントロールの最小範囲と最大範囲を設定し、新しい範囲を反映するようにバーを再描画します。
CProgressCtrl::SetState 現在の進行状況バー コントロールの状態を設定します。
CProgressCtrl::SetStep 進行状況バー コントロールのステップの増分を指定します。
CProgressCtrl::StepIt 進行状況バー コントロールの現在位置をステップインクリメント (参照 SetStep) だけ進め、新しい位置を反映するようにバーを再描画します。

解説

進行状況バー コントロールは、アプリケーションが長い操作の進行状況を示すために使用できるウィンドウです。 これは、操作の進行に合わせてシステムの強調表示の色を使用して、左から右に徐々に塗りつぶされる四角形で構成されています。

進行状況バー コントロールには、範囲と現在位置があります。 範囲は操作の合計期間を表し、現在の位置は、アプリケーションが操作の完了に向けて行った進行状況を表します。 ウィンドウ プロシージャでは、範囲と現在位置を使用して、強調表示の色で塗りつぶす進行状況バーの割合を決定します。 範囲と現在位置の値は符号付き整数で表されるため、現在の位置値の可能な範囲は -2,147,483,648 ~ 2,147,483,647 です。

使用の詳細については、「コントロールと使用CProgressCtrl」を参照CProgressCtrlしてください

継承階層

CObject

CCmdTarget

CWnd

CProgressCtrl

必要条件

ヘッダー:afxcmn.h

CProgressCtrl::CProgressCtrl

CProgressCtrl オブジェクトを構築します。

CProgressCtrl();

解説

オブジェクトを構築した CProgressCtrl 後、進行状況バー コントロールを作成する呼び出し CProgressCtrl::Create

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

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

CProgressCtrl::Create

進行状況バー コントロールを作成し、オブジェクトに CProgressCtrl アタッチします。

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

パラメーター

dwStyle
進行状況バー コントロールのスタイルを指定します。 次の進行状況バー コントロール スタイルに加えて、Windows SDK で CreateWindow 指定されているウィンドウ スタイルの任意の組み合わせをコントロールに適用します。

  • PBS_VERTICAL 進行状況の情報を垂直方向、上から下に表示します。 このフラグがない場合、進行状況バー コントロールは左右に表示されます。

  • PBS_SMOOTH 進行状況バー コントロールに、段階的で滑らかな塗りつぶしを表示します。 このフラグがないと、コントロールはブロックでいっぱいになります。

rect
進行状況バー コントロールのサイズと位置を指定します。 オブジェクトまたはRECT構造体をCRect指定できます。 コントロールは子ウィンドウである必要があるため、指定された座標は pParentWnd.

pParentWnd
進行状況バー コントロールの親ウィンドウ (通常は .CDialog NULL は指定できません。

nID
進行状況バー コントロールの ID を指定します。

戻り値

オブジェクトがCProgressCtrl正常に作成された場合は TRUE、それ以外の場合は FAL Standard Edition。

解説

2 つの手順でオブジェクトを CProgressCtrl 構築します。 まず、オブジェクトを作成するコンストラクターを CProgressCtrl 呼び出し、次に進行状況バー コントロールを作成する呼び出 Createしを行います。

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

コントロール (子ウィンドウ) を作成し、オブジェクトに CProgressCtrl 関連付けます。

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

パラメーター

dwExStyle
作成するコントロールの拡張スタイルを指定します。 拡張 Windows スタイルの一覧については、Windows SDK の dwExStyle パラメーター CreateWindowEx を参照してください。

dwStyle
進行状況バー コントロールのスタイルを指定します。 Windows SDK で CreateWindow 説明されているウィンドウ スタイルの任意の組み合わせを適用します。

rect
作成するウィンドウの RECT サイズと位置をクライアント座標 pParentWndで記述する構造体への参照。

pParentWnd
コントロールの親であるウィンドウへのポインター。

nID
コントロールの子ウィンドウ ID。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

Windows 拡張スタイルのCreate前書WS_EX_きで指定された拡張 Windows スタイルを適用する代わりに使用CreateExします。

CProgressCtrl::GetBarColor

現在の進行状況バー コントロールの進行状況インジケーター バーの色を取得します。

COLORREF GetBarColor() const;

戻り値

現在の進行状況バーの色 (値として COLORREF 表されます)、または CLR_DEFAULT 進行状況インジケーター バーの色が既定の色の場合。

解説

このメソッドは、Windows SDK で説明されているメッセージを送信 PBM_GETBARCOLOR します。

CProgressCtrl::GetBkColor

現在の進行状況バーの背景色を取得します。

COLORREF GetBkColor() const;

戻り値

現在の進行状況バーの背景色。値として COLORREF 表されます。

解説

このメソッドは、Windows SDK で説明されているメッセージを送信 PBM_GETBKCOLOR します。

CProgressCtrl::GetPos

進行状況バーの現在位置を取得します。

int GetPos();

戻り値

進行状況バー コントロールの位置。

解説

進行状況バー コントロールの位置は、画面上の物理的な位置ではなく、上と下の範囲の間にあります SetRange

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

進行状況バー コントロールの現在の下限と上限 (範囲) を取得します。

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

パラメーター

nLower
進行状況バー コントロールの下限を受け取る整数への参照。

nUpper
進行状況バー コントロールの上限を受け取る整数への参照。

解説

この関数は、下限と上限の値をそれぞれ参照される nLower 整数にコピーします nUpper

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

現在の進行状況バー コントロールの状態を取得します。

int GetState() const;

戻り値

現在の進行状況バー コントロールの状態。これは次のいずれかの値です。

Value 完了状態
PBST_NORMAL 進行中
PBST_ERROR Error
PBST_PAUStandard Edition D 一時停止

解説

このメソッドは、Windows SDK で説明されているメッセージを送信 PBM_GETSTATE します。

最初のコード例では、 m_progressCtrlプログレス バー コントロールにプログラムでアクセスするために使用される変数を定義します。 この変数は次の例で使用されています。

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

次のコード例では、現在の進行状況バー コントロールの状態を取得します。

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

現在の進行状況バー コントロールの進行状況バーのステップ増分を取得します。

int GetStep() const;

戻り値

進行状況バーのステップ の増分。

解説

ステップの増分は、呼び出し CProgressCtrl::StepIt によって進行状況バーの現在位置が増加する量です。

このメソッドは、Windows SDK で説明されているメッセージを送信 PBM_GETSTEP します。

最初のコード例では、 m_progressCtrlプログレス バー コントロールにプログラムでアクセスするために使用される変数を定義します。 この変数は次の例で使用されています。

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

次のコード例では、現在の進行状況バー コントロールのステップ 増分を取得します。

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

進行状況バー コントロールの現在位置を指定した増分 nPos だけ進め、新しい位置を反映するようにバーを再描画します。

int OffsetPos(int nPos);

パラメーター

nPos
位置を進める量。

戻り値

進行状況バー コントロールの前の位置。

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

現在の進行状況バー コントロールの進行状況インジケーター バーの色を設定します。

COLORREF SetBarColor(COLORREF clrBar);

パラメーター

clrBar
[in] COLORREF 進行状況インジケーター バーの新しい色を指定する値。 進行状況バーが既定の色を使用するように指定 CLR_DEFAULT します。

戻り値

進行状況インジケーター バーの前の色 (値として COLORREF 表されます)、または CLR_DEFAULT 進行状況インジケーター バーの色が既定の色の場合。

解説

このメソッドは SetBarColor 、Windows Vista テーマ が有効でない場合にのみ、進行状況バーの色を設定します。

このメソッドは、Windows SDK で説明されているメッセージを送信 PBM_SETBARCOLOR します。

最初のコード例では、 m_progressCtrlプログレス バー コントロールにプログラムでアクセスするために使用される変数を定義します。 この変数は次の例で使用されています。

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

次のコード例では、進行状況バーの色を赤、緑、青、または既定値に変更します。

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

進行状況バーの背景色を設定します。

COLORREF SetBkColor(COLORREF clrNew);

パラメーター

clrNew
COLORREF新しい背景色を指定する値。 進行状況バーの CLR_DEFAULT 既定の背景色を使用する値を指定します。

戻り値

前の COLORREF 背景色を示す値、または CLR_DEFAULT 背景色が既定の色かどうかを示す値。

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

現在の進行状況バー コントロールのマーキー モードをオンまたはオフにします。

BOOL SetMarquee(
    BOOL fMarqueeMode,
    int nInterval);

パラメーター

fMarqueeMode
[in] TRUE マーキー モードをオンにするか、マー FALSE キー モードをオフにします。

nInterval
[in]マーキー アニメーションの更新間隔 (ミリ秒単位)。

戻り値

このメソッドは常に TRUE を返します。

解説

マーキー モードをオンにすると、進行状況バーがアニメーション化され、シアター マーキーのサインオンのようにスクロールします。

このメソッドは、Windows SDK で説明されているメッセージを送信 PBM_SETMARQUEE します。

最初のコード例では、 m_progressCtrlプログレス バー コントロールにプログラムでアクセスするために使用される変数を定義します。 この変数は次の例で使用されています。

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

次のコード例では、マーキー スクロール アニメーションを開始および停止します。

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

進行状況バー コントロールの現在位置を指定に応 nPos じて設定し、新しい位置を反映するようにバーを再描画します。

int SetPos(int nPos);

パラメーター

nPos
進行状況バー コントロールの新しい位置。

戻り値

進行状況バー コントロールの前の位置。

解説

進行状況バー コントロールの位置は、画面上の物理的な位置ではなく、上と下の範囲の間にあります SetRange

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

進行状況バー コントロールの範囲の上限と下限を設定し、新しい範囲を反映するようにバーを再描画します。

void SetRange(
    short nLower,
    short nUpper);

void SetRange32(
    int nLower,
    int nUpper);

パラメーター

nLower
範囲の下限を指定します (既定値は 0)。

nUpper
範囲の上限を指定します (既定値は 100)。

解説

このメンバー関数 SetRange32 は、進行状況コントロールの 32 ビット範囲を設定します。

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

現在の進行状況バー コントロールの状態を設定します。

int SetState(int iState);

パラメーター

iState
[in]進行状況バーを設定する状態。 次のいずれかの値を使用します。

  • PBST_NORMAL - 進行中
  • PBST_ERROR -エラー
  • PBST_PAUSED -一時 停止

戻り値

現在の進行状況バー コントロールの直前の状態。

解説

このメソッドは、Windows SDK で説明されているメッセージを送信 PBM_SETSTATE します。

最初のコード例では、 m_progressCtrlプログレス バー コントロールにプログラムでアクセスするために使用される変数を定義します。 この変数は次の例で使用されています。

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

次のコード例では、現在の進行状況バー コントロールの状態を Paused または In Progress に設定します。

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

進行状況バー コントロールのステップの増分を指定します。

int SetStep(int nStep);

パラメーター

nStep
新しいステップの増分。

戻り値

前のステップの増分。

解説

ステップの増分は、進行状況バーの現在位置を CProgressCtrl::StepIt 増やす呼び出しの量です。

既定のステップ増分は 10 です。

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

ステップの増分によって進行状況バー コントロールの現在位置を進め、新しい位置を反映するようにバーを再描画します。

int StepIt();

戻り値

進行状況バー コントロールの前の位置。

解説

ステップの増分は、メンバー関数によって CProgressCtrl::SetStep 設定されます。

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

関連項目

MFC サンプル CMNCTRL2
CWnd クラス
階層図