본문 바로가기

Programming/API

타이머

키보드나 마우스처럼 사용자들이 입력하는 메시지도 있고 사용자의 입력과는 상관없이 발생하는 메시지도 있다. 바로 타이머 메시지 WM_TIMER이다. 타이머 메시지는 일정 시간간격으로 발생 하도록 할 수 있어 주기적으로 반복해야하는 경우 사용된다.


타이머는 SetTimer 함수를 이용하여 타이머를 생성하고, KillTimer 함수를 이용하여 타이머를 제거 한다.


UNIT SetTimer(HWND hWnd, UINT nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc)

SetTimer 함수의 원형은 다음과 같다.

첫번째 인자 hWnd는 타이머 메시지를 받을 윈도우로 WndProc에서 인자로 받은 hWnd를 그대로 사용 하면된다.

두번째 인자 nIDEvent는 타이머의 번호를 지정하는 것으로 각각 타이머를 구분하기 위해 쓰인다. 타이머를 하나만 지정할 경우 1로 주면 되고, 여러개의 타이머를 사용할때는 각각 다른 번호를 순서대로 주면된다.

세번째 인자 uElapse는 1/1000초 단위로 타이머의 주기를 설정하며, 1초는 1000, 10초라면 10000이다. 그 값에 따라 타이머 메시지가 발생하는 주기가 결정된다.

네번째 인자 lpTimerFunc는 타이머 주기마다 사용할 함수를 지정하는 부분으로 함수를 호출하지 않을경우에는 NULL로 채워주면 된다.


BOOL KillTimer(HWND hWnd, UINT uIDEvent);

KillTimer 함수의 원형은 다음과 같다.

첫번째 인자 hWnd는 타이머 메시지를 갖고있는 윈도우 핸들을 입력하여 넘기고,

두번째 인자 uIDEvent는 그 윈도우 핸들의 타이머 ID를 입력하여 넘긴다.

타이머를 제거 하지 않으면 프로그램이 종료 되어도 타이머는 남아서 계속해서 CPU를 차지하고 있기때문에 시스템 성능 저하를 가져 오기 때문에 KillTimer 함수를 이용하여 직접 제거 해 주어야한다. 타이머를 여러개 생성 한 경우 당연히 모두 각각 제거 해줘야한다.

'Programming > API' 카테고리의 다른 글

리소스  (0) 2013.08.16
WM_SIZE 메시지와 WM_MOVE 메시지  (0) 2013.08.14
tchar 매핑테이블  (0) 2013.08.13
마우스의 입력  (0) 2013.08.13
무효화 영역과 InvalidateRect 함수  (0) 2013.08.09