[MFC 비주얼프로그래밍-9] 타이머 관리
- 최초 등록일
- 2009.03.29
- 최종 저작일
- 2008.01
- 21페이지/ MS 파워포인트
- 가격 2,500원
소개글
MFC 의 기초부터 고급기능까지
체계적으로 정리 요약되어 있습니다.
발표자료로도 좋으며 개인 공부시에도 많은 도움이 됩니다.
목차
없음
본문내용
타이머 (Timer)
타이머는 일정 시간이 경과되면 WM_TIMER 메시지를 발생함.
타이머를 설정하는 함수는 SetTimer 임.
UINT SetTimer(
HWND hWnd, // 윈도우 핸들
UINT nIDEvent, // 타이머 번호
UINT nElapse, // 타이머 시간 간격
TIMERPROC lpTimerFunc // 타미어 메시지 핸들러
)
SetTimer함수의 타이머 시간을 밀리 세컨드 단위로 설정하여 사용하면 되지만, 윈도우 OS의 클럭 주기가 다름
Windows 98에서 Setimer를 10ms로 설정해도 시스템 클럭의 한계로 인해 10ms 마다 타이머 메시지 핸들러가 호출되지 않는다.
Operating System
System Clock
Windows 95, 98
55ms
Windows NT
10ms
Windows NT 4.0, Alpha
7.5ms
Windows XP
10ms
*
타이머 관리
타이머 (Timer)
SetTimer의 nIDEvent의 값을 달리 하여 여러 개의 타이머를 생성할 수 있음.
타이머1: 1초 마다 발생
타이머2: 10초 마다 발생
ex)
SetTimer(hWnd, 1, 1000, NULL); // 시간 간격은 ms 단위
SetTimer(hWnd, 2, 10000, NULL);
위와 같이 하면 1번 타이머와 2번 타이머 모두 WM_TIMER를 발생시키는데, 어떤 타이머에 의한 메시지인지 구별하기 위해 wParam에 메시지와 타이머 번호를 설정함.
ex)
case WM_TIMER:
if(wParam == 1)
{
// 1번 타이머로부터 메시지가 발생되었을 경우
}
else if(wParam == 2)
{
// 2번 타이머로부터 메시지가 발생되었을 경우
}
break;
위와 같은 방법으로 해당 타이머에 대응하는 내용을 분리하여 수행할 수 있음.
*
타이머 관리
타이머 (Timer)
SetTimer 함수의 메시지 핸들러 설정
아래와 같이 다수의 타이머를 사용한 경우 switch 문은 수행 속도 저하를 가져올 수 있음.
case WM_TIMER:
if(wParam == 1)
{
// 1번 타이머로부터 메시지가 발생되었을 경우
}
else if(wParam == 2)
{
// 2번 타이머로부터 메시지가 발생되었을 경우
}
else if(wParam == 3)
{
// 3번 타이머로부터 메시지가 발생되었을 경우
}
break;
수행 속도 저하를 막기 위해 SetTimer 함수를 사용할 때, 메시지 핸들러 설정.
SetTimer(hWnd, 1, 1000, TimerProc
참고 자료
없음