다음을 통해 공유


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를 지정합니다.

Return Value

개체가 CProgressCtrl 성공적으로 만들어지면 TRUE이고, 그렇지 않으면 FALSE입니다.

설명

두 단계로 개체를 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의 매개 변수 CreateWindowEx 를 참조 dwExStyle 하세요.

dwStyle
진행률 표시줄 컨트롤의 스타일을 지정합니다. Windows SDK에 CreateWindow 설명된 창 스타일의 조합을 적용합니다.

rect
생성할 RECT 창의 크기와 위치를 설명하는 구조체에 대한 참조로, 클라이언트 좌표로 pParentWnd표시됩니다.

pParentWnd
컨트롤의 부모 창에 대한 포인터입니다.

nID
컨트롤의 자식 창 ID입니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

Windows 확장 스타일 서문WS_EX_으로 지정된 확장 Windows 스타일을 적용하는 대신 Create 사용합니다CreateEx.

CProgressCtrl::GetBarColor

현재 진행률 표시줄 컨트롤의 진행률 표시줄 색을 가져옵니다.

COLORREF GetBarColor() const;

Return Value

현재 진행률 표시줄의 색으로 COLORREF , 값으로 표시되거나 CLR_DEFAULT 진행률 표시줄 색이 기본 색인 경우입니다.

설명

이 메서드는 PBM_GETBARCOLOR Windows SDK에 설명된 메시지를 보냅니다.

CProgressCtrl::GetBkColor

현재 진행률 표시줄의 배경색을 가져옵니다.

COLORREF GetBkColor() const;

Return Value

값으로 표시되는 현재 진행률 표시줄의 배경색입니다 COLORREF .

설명

이 메서드는 PBM_GETBKCOLOR Windows SDK에 설명된 메시지를 보냅니다.

CProgressCtrl::GetPos

진행률 표시줄의 현재 위치를 검색합니다.

int GetPos();

Return Value

진행률 표시줄 컨트롤의 위치입니다.

설명

진행률 표시줄 컨트롤의 위치는 화면의 실제 위치가 아니라 표시된 상한 범위와 하위 범위 사이에 있습니다 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;

Return Value

다음 값 중 하나인 현재 진행률 표시줄 컨트롤의 상태입니다.

State(상태)
PBST_NORMAL 진행 중
PBST_ERROR Error
PBST_PAUSED 일시 중지됨

설명

이 메서드는 PBM_GETSTATE Windows SDK에 설명된 메시지를 보냅니다.

예시

첫 번째 코드 예제는 진행률 표시줄 컨트롤에 프로그래밍 방식으로 액세스하는 데 사용되는 변수 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;

Return Value

진행률 표시줄의 단계 증가입니다.

설명

단계 증가는 진행률 표시줄의 현재 위치를 늘리기 위한 CProgressCtrl::StepIt 호출의 양입니다.

이 메서드는 PBM_GETSTEP Windows SDK에 설명된 메시지를 보냅니다.

예시

첫 번째 코드 예제는 진행률 표시줄 컨트롤에 프로그래밍 방식으로 액세스하는 데 사용되는 변수 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
위치를 전진하는 양입니다.

Return Value

진행률 표시줄 컨트롤의 이전 위치입니다.

예시

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 합니다.

Return Value

값으로 COLORREF 표시되거나 CLR_DEFAULT 진행률 표시줄의 색이 기본 색인 경우 진행률 표시줄의 이전 색입니다.

설명

이 메서드는 SetBarColor Windows Vista 테마 가 적용되지 않은 경우에만 진행률 표시줄 색을 설정합니다.

이 메서드는 PBM_SETBARCOLOR Windows SDK에 설명된 메시지를 보냅니다.

예시

첫 번째 코드 예제는 진행률 표시줄 컨트롤에 프로그래밍 방식으로 액세스하는 데 사용되는 변수 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 진행률 표시줄에 기본 배경색을 사용할 값을 지정합니다.

Return Value

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] 선택 윤곽 애니메이션 업데이트 사이의 시간(밀리초)입니다.

Return Value

이 메서드는 항상 TRUE을 반환합니다.

설명

선택 윤곽 모드가 켜지면 진행률 표시줄에 애니메이션이 적용되고 극장 윤곽선의 기호처럼 스크롤됩니다.

이 메서드는 PBM_SETMARQUEE Windows SDK에 설명된 메시지를 보냅니다.

예시

첫 번째 코드 예제는 진행률 표시줄 컨트롤에 프로그래밍 방식으로 액세스하는 데 사용되는 변수 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
진행률 표시줄 컨트롤의 새 위치입니다.

Return Value

진행률 표시줄 컨트롤의 이전 위치입니다.

설명

진행률 표시줄 컨트롤의 위치는 화면의 실제 위치가 아니라 표시된 상한 범위와 하위 범위 사이에 있습니다 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 -일시 중지

Return Value

현재 진행률 표시줄 컨트롤의 이전 상태입니다.

설명

이 메서드는 PBM_SETSTATE Windows SDK에 설명된 메시지를 보냅니다.

예시

첫 번째 코드 예제는 진행률 표시줄 컨트롤에 프로그래밍 방식으로 액세스하는 데 사용되는 변수 m_progressCtrl를 정의합니다. 이 변수는 다음 예제에서 사용됩니다.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

다음 코드 예제에서는 현재 진행률 표시줄 컨트롤의 상태를 일시 중지 또는 진행 중으로 설정합니다.

// 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
새로운 단계 증분입니다.

Return Value

이전 단계가 증가합니다.

설명

단계 증가는 진행률 표시줄의 현재 위치를 늘리기 위한 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();

Return Value

진행률 표시줄 컨트롤의 이전 위치입니다.

설명

단계 증가는 멤버 함수에 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 클래스
계층 구조 차트