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
の使用方法の詳細については、「ControlsとCProgressCtrl
の使用」を参照してください。
継承階層
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 のCreateWindowEx
の dwExStyle
パラメーターを参照してください。
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();