CDialog에 있는 OnTimer
OnTimer라는 메세지 핸들러는 SetTimer(타이머ID, 발생간격, 실행하려는 함수명)과 함께 사용한다
// 여기서 함수명에 NULL을 넣어주면 OnTimer를 사용
일정 시간 뒤에 원하는 업무를 처리하기 사용한다.
비슷한 기능으로 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) limitLatencyClickAble = TRUE; break; KillTimer(1394); |
switch문을 사용하여 Timer의 ID를 구분하여 처리
SetTimer에 첫 파라매터에 1394를 적었기에 OnTimer( )에서는 switch문에 case로 1394
타이머 중지
KillTimer(1394); |
타이머 아이디를 입력하면 끝
'Study Note > Programming' 카테고리의 다른 글
[OpenCV] 설치 및 설정 (VS) (0) | 2017.01.06 |
---|---|
[MFC] assert() 함수 (1) | 2016.11.22 |
메모리 관리 문제 (1) | 2016.11.22 |
[MFC] 대화상자 Domodal, Modaless (0) | 2016.11.19 |
[MFC] 컨트롤 신호에 대한 메시지 맵을 처리하는 OnNotify() (0) | 2016.11.19 |