본문 바로가기

컴퓨터/언어,프로그래밍

MFC Timer (SetTimer,OnTimer,KillTimer,ON_WM_TIMER)

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

 

비슷한 기능으로 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
제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...