次の方法で共有


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の使用方法の詳細については、「ControlsCProgressCtrlの使用」を参照してください。

継承階層

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
進行状況バー コントロールのサイズと位置を指定します。 CRect オブジェクトまたはRECT構造体のいずれかを指定できます。 コントロールは子ウィンドウである必要があるため、指定した座標は pParentWndのクライアント領域を基準にしています。

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

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

戻り値

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

解説

CProgressCtrl オブジェクトは、2 つの手順で作成します。 まず、 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 のCreateWindowExdwExStyle パラメーターを参照してください。

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

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

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

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

戻り値

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

解説

CreateではなくCreateExを使用して、Windows 拡張スタイルの前置WS_EX_で指定された拡張 Windows スタイルを適用します。

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 エラー
PBST_PAUSED 一時停止

解説

このメソッドは、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 themeが有効でない場合にのみ、進行状況バーの色を設定します。

このメソッドは、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
[入力] 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 クラス
階層図