윈도우 프로그램을 실행하다 보면 종종 볼 수 있는 컨트롤이다.
주로 오래 걸리는 작업의 진행 상황을 나타낼때 사용이 된다.
대용량 파일을 복사할때 나타난다.
오른쪽 그림은 다이얼로그에서 도구상자이다.
도구상자에서 원하는 위치에 컨트롤을 추가 하면 된다.
원하는 위치에서 배치한 다음 Progress Control을 활용해 보자.
Progress Control을 사용하는 이유는 전체에서 일부를 보여주기 위해서이다.
그러므로 주로 활용하는 멤버함수가 SetRange(), SetRange32(), SetPos() 3개가 있다.
SetRange(short nLower,short nUpper);
SetRange32(int nLower,int nUpper);
현재 위치와 전체 길이를 매개변수로 받는 함수이다.
위의 두함수의 사용방식에 큰 차이가 없지만 int를 받느냐 short를 받느냐 이 차이이다.
SetRange함수가 2의 16승만큼 길이가 되고 SetRange32함수는 길이가 2의 32승만큼 길이를 가진다.
nLower 부분에 진행위치를 전달하고, nUpper부분에 전체 진행길이를 전달하면 Progress Control이 정의된다.
위의 두함수의 사용방식에 큰 차이가 없지만 int를 받느냐 short를 받느냐 이 차이이다.
SetRange함수가 2의 16승만큼 길이가 되고 SetRange32함수는 길이가 2의 32승만큼 길이를 가진다.
nLower 부분에 진행위치를 전달하고, nUpper부분에 전체 진행길이를 전달하면 Progress Control이 정의된다.
ex) m_bar.SetRange32(0,1000); // m_bar에 전체 길이 1000인 Progress Control을 정의한다.
SetPos(int nPos);
처음 전체길이가 지정되면 그 다음 진행진행과정을 나타낼때는 전체길이를 지정할 필요가 없다.
그냥 현재 위치만 나타내면 될것이다.
그냥 현재 위치만 나타낼때 사용하는 함수가 SetPos함수이다.
nPos 부분에 현재 위치를 전달하면 된다.
그냥 현재 위치만 나타내면 될것이다.
그냥 현재 위치만 나타낼때 사용하는 함수가 SetPos함수이다.
nPos 부분에 현재 위치를 전달하면 된다.
ex) m_bar.SetPos(200); // m_bar의 진행위치가 200에 나타난다.
Progress Control을 한번 사용해본 결과 처음에 전체 길이를 얼마로 정해두는지 정하는 것이 중요한것 같다.
예측가능한 단순 반복작업을 할경우는 금방 계산이 되지만, 대부분의 프로그래밍이 예측하지 못한 상황까지도 고려해 주어야 하기 때문이다.
아마도 가장 좋은 프로그램은 대기시간을 가지지 않을만큼 깔끔하고 정돈된 알고리즘을 사용해서 Progress Control을 사용하지 않는것이 좋은 프로그램인것 같다.
아마도 구글검색처럼?
예측가능한 단순 반복작업을 할경우는 금방 계산이 되지만, 대부분의 프로그래밍이 예측하지 못한 상황까지도 고려해 주어야 하기 때문이다.
아마도 가장 좋은 프로그램은 대기시간을 가지지 않을만큼 깔끔하고 정돈된 알고리즘을 사용해서 Progress Control을 사용하지 않는것이 좋은 프로그램인것 같다.
아마도 구글검색처럼?
'Programing > MFC' 카테고리의 다른 글
[MFC] 엑셀파일 읽기/쓰기 (5) | 2011.02.27 |
---|