본문 바로가기

개발/mfc

MFC vs2010 : Ontimer와 SetTimer, KillTimer

반응형

반복적으로  또는 주기적으로 뭘 하려면, timer 또는 thread 를 쓴다.

- timer : 주기적으로 

- thread : 단독으로 무한 반복

 

여기서 timer 를 알아본다

3가지 기본 함수 가 있다.

1. SetTimer  : Timer 시작

2. OnTimer  : Timer

3. KillTImer  : Timer 

 

사용 방법

=====================

1. 헤더파일에 함수를 선언

class CDlg_Main : public CDialog
{
// 생략
public:
  afx_msg void OnTimer(UINT nIDEvent);
// 생략
}

=====================

2. 시작 - SetTimer

함수 정의는

UINT_PTR SetTimer(
  [in, optional] HWND           hWnd,
  [in]                UINT_PTR    nIDEvent,                 // 사용자 임의로 부여 하는 순
  [in]                UINT              uElapse,                 // ms 주기를 같는 반복 주기 , 1000 이면 1초 마다 실행 한다.
  [in, optional] TIMERPROC lpTimerFunc
);

 

인데, 보통 처음것과 마지막것은 옵션이라 잘 안쓴다

사용 보기 > 

 

// ※ 메시지 맵에  등록할 내용.

BEGIN_MESSAGE_MAP(CDlg_Main, CDialog)
// 생략
  ON_WM_TIMER()              // <--- 이것 등록 하셔요.  때가 되면, OnTimer()  를 불러라고 지정해주는 것.
// 생략
END_MESSAGE_MAP()

 

BOOL CDlg_Main::OnInitDialog()
{
// 생략

// ※ 타이머 시작
  SetTimer(1,100,NULL);   ////////  Timer 시작, 주기  100= 100 ms 
  SetTimer(2,1000,NULL);   ////////  Timer 시작, 주기  1000= 1 s 
// 생략
}

 

 

=====================

3. 실행 - OnTimer

사용 보기 > 
 void CDlg_Main::OnTimer(UINT nIDEvent)
 {
   switch(nIDEvent)
   {
   case 1:    // 주기: 100 ms 
// do job 1
     break;
   case 2:    // 주기: 1 sec 
// do job 2
     break;
   }
}

 

=====================

4. 끝

사용 보기 > 

  KillTimer(1);
  KillTimer(2);

 

=====================

=====================

 

반응형