MFC 타이머

일정 시간 뒤에 원하는 업무를 처리하기 사용합니다.

비슷한 기능으로 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;
mCheckSendVoice.EnableWindow(TRUE);

break;
}

KillTimer(1394);
}

switch문을 사용하여 Timer의 ID를 구분하여 처리를 합니다.

SetTimer에 첫 파라매터에 1394를 적었기에 OnTimer( )에서는 switch문에 case로 1394를 적었습니다.

-타이머 중지

 KillTimer(1394);

타이머 아이디를 입력하면됩니다.

더욱 자세히 적어야 되겠지만 실질적 사용으로는 이것만 존재하면 됩니다.

출처 : http://sungho0459.blog.me/40135346581