일정 시간 뒤에 원하는 업무를 처리하기 사용합니다.
비슷한 기능으로 Sleep( millisecond ) 를 입력하는데요.
Sleep을 이용할 경우 해당 쓰레드 전체가 멈추어 버리고 그 멈춤에 따라 외부 인터럽트입력(키보드, 마우스, 등등)이
주어지게 되면 버퍼에 쌓였다가 한번에 처리되는 일이 발생하게 되버립니다.
그래서 그걸 방지하기 위해 Timer를 사용하는데 사용방법은 다음과 같습니다.
-등록
BEGIN_MESSAGE_MAP(CGroupChatWindow, CDialog)
… ON_WM_TIMER() … END_MESSAGE_MAP() |
메세지 맵에 ‘ON_WM_TIMER()’를 등록
-타이머 시작
SetTimer(1394,1000,NULL); |
파라매터
1) Timer의 ID값
2) SetTimer후 몇 millisecond후 마다 실행 (반복실행)
3) 함수명, NULL 사용시 오버라이드 함수 ‘OnTimer()’로 작동됩니다.
반환값 : 핸들러
-선언
afx_msg void OnTimer(UINT nIDEvent); |
헤더파일에 선언해 줍니다.
-오버라이드 함수 내부
void CGroupChatWindow::OnTimer(UINT nIDEvent) { switch(nIDEvent) { case 1394: limitLatencyClickAble = TRUE; break; KillTimer(1394); |
switch문을 사용하여 Timer의 ID를 구분하여 처리를 합니다.
SetTimer에 첫 파라매터에 1394를 적었기에 OnTimer( )에서는 switch문에 case로 1394를 적었습니다.
-타이머 중지
KillTimer(1394); |
타이머 아이디를 입력하면됩니다.
더욱 자세히 적어야 되겠지만 실질적 사용으로는 이것만 존재하면 됩니다.
출처 : http://sungho0459.blog.me/40135346581