2007. 9. 20. 19:48ㆍHW & SW
출처 : http://blog.naver.com/0zoois/120016636399
===========================================================
2. 멀티미디어 타이머 이용 방법
WM_TIMER 메시지를 이용한 방법이나 멀티미디어 타이머를 이용한 방법에서는 반복주기를 msec 단위로 지정해 줄 수가 있습니다. 그러나, WM_TIMER를 이용한 방법에서는 사실상 정확한 반복주기를 유지한다는 것이 불가능하여 수십 msec만큼의 정밀도밖에 가지지 못합니다. 반면에, 이 문서에서 설명할 멀티미디어 타이머는 최대 1msec까지 그 정밀도가 보장됩니다. 고정된 시간간격의 유지가 필수적인 애플리케이션에 유용한 방법입니다.
2-1. 타이머 생성 : timeSetEvent 함수 이용
MMRESULT timeSetEvent(UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, DWORD dwUser, UINT fuEvent);
매개 변수
uDelay : 딜레이 시간, mili second 단위
uResolution : 해상도, mili second 단위, 작은 값일수록 해상도가 높음. 0이면, 가능한 최대의 해상도 사용. 되도록 큰 값을 줘서 시스템의 부하를 줄일 필요가 있음
lpTimeProc : 콜백 함수 포인터
/* 참고
콜백 함수의 프로토타입 : void CALLBACK TimeProc(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
매개 변수
uID : 타이머 ID, timeSetEvent() 함수가 돌려주는 값
uMsg : 사용하지 않음
dwUser : timeSetEvent()의 dwUser값
dw1, dw2 : 사용하지 않음
*/
dwUser : 콜백 함수에 전달하는 값
fuEvent : 타이머 타입. 한 번만 실행할 경우에는 TIME_ONESHOT으로, 반복적으로 실행할 경우에는 TIME_PERIODIC로 설정, 그외 몇 가지 타입이 더 있음.
리턴값 : 리턴값의 자료형이 MMRESULT으로서, UINT와 같음. 0이면 타이머 생성 실패, 0이 아니면 생성된 타이머 ID
설명 : uDelay의 타이머 생성. lpTimeProc가 가리키는 콜백 함수가 호출됨
헤더 파일 : mmsystem.h (이 헤더 파일과 아래의 라이브러리 파일은 timeSetEvent()와 timeKillEvent()를 사용하기 위해 필요함)
라이브러리 파일 : winmm.lib
사용 예)
1) 해상도 1, 딜레이 시간 1초로 TimerProc()를 반복 실행하도록 설정하는 예
m_uTimerID = timeSetEvent(1000, 1, TimerProc, 0, TIME_PERIODIC);
2-2. 타이머 종료 : timeKillEvent 함수 이용
MMRESULT timeKillEvent(UINT uTimerID);
매개 변수
uTimerID : 종료시키고자 하는 타이머 ID
리턴값 : TIMERR_NOERROR라면 성공, TIMERR_INVALPARAM이면 명시한 타이머가 없음을 뜻함
설명 : uTimerID로 명시한 타이머를 종료시킴. uTimerID는 timeSetEvent()의 리턴값임.
사용 예)
1) 2-1. timeSetEvent() 함수의 "사용 예"에서, 타이머의 ID를 가지고 있는 변수 m_uTimerID를 이용해 타이머를 종료시키는 예
timeKillEvent(m_uTimerID);
2-3. 첨부 파일 설명
1) MMTimer.zip : 이 프로젝트는 메뉴 명령으로 멀티미디어 타이머를 생성하고 소멸하는 예로서, F5키를 눌러 디버그 모드에서 Output창으로 결과를 확인할 수 있습니다. 콜백 함수인 TimerProc()의 선언과 정의는 stdafx.h와 stdafx.cpp에 되어 있습니다
'HW & SW' 카테고리의 다른 글
glBegin()과 glEnd() 사이에 나올 수 있는 커맨드들 (0) | 2007.09.28 |
---|---|
LPSTR, LPCSTR, LPTSTR, LPCTSTR (0) | 2007.09.20 |
MFC Dialog 기반 openGL 설정 방법 및 설정 완료된 Project (0) | 2007.09.20 |
Intel JPEG Library 1.51 (0) | 2007.09.19 |
Intel JPEG Library 1.1 (0) | 2007.09.19 |