호랭이 블로그를 찾아주시는 개발자 분들에게 조금이나마 도움이 되고자 글을 올리기로 하였습니다.
저는 C++ 개발자로 현재 멀티미디어 플레이어 엔진을 개발하고 있습니다.
앞으로 좋은 자료들로 찾아뵙겠습니다.
Taskbar API (Progress)
지난번 Windows7 Taskbar API를 소개하면서 Windows7 Taskbar에서 새롭게 추가된 내용들을 정리하고, VC++을 이용하여 Overlay Icon을 적용하는 방법에 대해서 다뤘었다. 이번에는 새로운 기능들 중 Taskbar에 Progress bar를 적용하는 방법에 대해서 알아본다.
Windows7 의 Taskbar에는 Progress를 적용할 수가 있는 것은 물론이고, 상황에 따라서 해당 프로그램 윈도우가 보이지 않는 상황에서도 좀 더 다채로운 상황을 사용자가 직시할 수 있도록 하기 위해 다음과 같이 4가지 상태 Flag를 준비해 두었다.
1. TBPF_INDETERMINATE : 이 플래그를 설정하면 녹색이 왼쪽에서 오른쪽으로 1.5초 주기로 이동을 하는 에니메이션 효과를 보여준다. 설치, 복사 등의 준비상태에 사용하기에 적절하다.
2. TBPF_NORMAL : 녹색으로 채우고자 할 경우에 사용한다. 플래그 이름이 NORMAL이니 정상적인 상태의 진행상황을 표시하고자 할 경우에 사용한다.
3. TBPF_PAUSED : 노란색으로 채우고자 할 경우에 사용한다. 플래그 이름이 PAUSED로 지정되어 있으니 진행상황이 일시정지 중인 경우나 예외 상황에 적절히 사용한다.
4. TBPF_ERROR : 빨간색으로 채우고자 할 경우에 사용한다. 오류발생시에 사용자에게 알리기 위해 사용한다.
SetProgressState
앞에서 설명한 4가지 상태 플래그를 적용하기 위한 ITaskbarList3의 멤버함수로 함수 원형은 다음과 같다.
HRESULT SetProgressState (HWND hWnd, TBPFLAG tbpFlags) |
TBPLAG에 TBPF_INDETERMINATE, TBPF_NORMAL, TBPF_PAUSED, TBPF_ERROR 중 하나를 사용하여 상태를 설정할 수 있으며, Progress가 진행 중인 경우에도 사용할 수 있다.
SetProgressValue
진행상태를 설정하기 위한 ITaskbarList3 의 멤버함수로 함수 원형은 다음과 같다.
HRESULT SetProgressValue (HWND hWnd, ULONGLONG ullCompleted, ULONGLONG ullTotal) |
ullCompleted 에 현재 진행 중인 숫자를 입력하고, ullTotal에 최대 숫자를 입력하면, 함수 내에서 자동으로 백분율(%)로 계산하여 진행상황을 표시 해준다.
Example
ITaskbarList3* ptl;//Created earlier DWORD WINAPI DoWork(LPVOID) { ptl->SetProgressState(hmainwnd, TBPF_NORMAL); for (int i = 0; i < WorkToDo; ++i) { DoSomePartOfTheWork(i); ptl->SetProgressValue(hmainwnd, i, WorkToDo); } ptl->SetProgressState(hmainwnd, TBPF_PAUSED); return 0; } |
'개발 이야기' 카테고리의 다른 글
OESF, 안드로이드의 임베디드 시스템용 확장 플랫폼 로드맵 발표(Embedded Master 1) (0) | 2009.08.13 |
---|---|
안드로이드의 임베디드 보급 OESF가 책임집니다. (2) | 2009.08.12 |
Windows 7 Application 개발 - 2, Task Bar API (0) | 2009.08.11 |
Windows 7 Application 개발이야기 (1) | 2009.08.11 |
소프트웨어 개발자를 위한 윈도우7 세미나 제 1탄 (2) | 2009.08.11 |