티스토리 뷰

프로그래밍/MFC

MFC 프로그레스 컨트롤

에어버스 2016. 7. 9. 13:11
MFC 프로그레스 컨트롤

오랜 시간이 걸리는 작업의 진행 상황을 시각적으로 표시하는 용도로 사용한다.

1. 프로그레스 컨트롤 스타일

- Border : 경계선 유무
- Vertical : 세로 방향
- Smooth : 그래프 바 이미지 공백이 없다.

2. 프로그레스 컨트롤 클래스

- 범위 설정과 현재 범위 얻기
void CProgressCtrl::SetRange(short nLower, short nUpper);
void CProgressCtrl::GetRange(int& nLower, int& nUpper);
기본값은 0~100 이므로 사용하기 전에 용도에 맞게 최소, 최대 범위를 설정해야 한다.

- 위치 설정과 현재 위치 얻기
int CProgressCtrl::SetPos(int nPos);
int CProgressCtrl::GetPos();
nPos : SetRange() 로 정한 범위에 속해야 한다.

3. 증감

int CProgressCtrl::OffsetPos(int nPos);
현재 위치에 nPos 값을 더한다. nPos 값이 음수면 현재 위치가 감소한다.

int CProgressCtrl::SetStep(int nStep);
int CProgressCtrl::StepIt(); // SetStep()으로 설정한 크기인 nStep 값을 매번 현재 위치에 더한다.
nStep 값이 음수면 StepIt() 을 호출할 때마다 현재 위치가 감소한다.

Border : true
Smooth : True 로 속성 지정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class CMFCApplication15View : public CFormView
{
...
public:
    CProgressCtrl m_progress;
    bool m_bNowProgress;
    afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
    afx_msg void OnTimer(UINT_PTR nIDEvent);
};
 
BEGIN_MESSAGE_MAP(CMFCApplication15View, CFormView)
    ON_WM_LBUTTONDBLCLK()
    ON_WM_TIMER()
END_MESSAGE_MAP()
 
void CMFCApplication15View::OnLButtonDblClk(UINT nFlags, CPoint point)
{
    if (m_bNowProgress == false)
    {
        m_bNowProgress = true;
        m_progress.SetRange(010);
        m_progress.SetPos(0);
        SetTimer(100500NULL); // ID=100 인 타이머 생성
    }
    CFormView::OnLButtonDblClk(nFlags, point);
}
 
void CMFCApplication15View::OnTimer(UINT_PTR nIDEvent)
{
    if (nIDEvent == 100)
    {
        if (m_progress.GetPos() < 100)
            m_progress.OffsetPos(1);
        else
            KillTimer(100);
        m_bNowProgress = false;
    }
    CFormView::OnTimer(nIDEvent);
}
cs


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31