SetTimer MFC 를 어떻게 사용 하 는 지 상세 합 니 다.

다음으로 이동:http://blog.csdn.net/ellor/article/details/1714741
타이머 이벤트, 즉 타이머 이 벤트 는 게임 프로 그래 밍 에서 자주 사용 되 는 이벤트 입 니 다.그것 을 빌 리 면 정시 에 동작 을 수행 하 는 효과 가 생 길 수 있다.이 글 은 SetTimer () 함 수 를 어떻게 사용 하 는 지 여러분 과 함께 토론 합 니 다.
           1. SetTimer 정 의 는 어디 에 있 습 니까?
            SetTimer 는 타 이 머 를 정의 하 는 것 을 표시 합 니 다.정 의 된 창 에 따라 지 정 된 창 (CWnd) 에서 OnTimer 이 벤트 를 구현 하면 해당 이벤트 가 가능 합 니 다.
SetTimer 는 두 개의 함수 가 있 습 니 다.하 나 는 전역 함수: SetTimer ()
UINT SetTimer(       HWND hWnd,              // handle of window for timer messages       UINT nIDEvent,          // timer identifier       UINT uElapse,           // time-out value       TIMERPROC lpTimerFunc       // address of timer procedure );
 
           이 중 hwnd 는 Timer 이 벤트 를 처리 하 는 CWNd 를 가리 키 는 창 클래스 입 니 다.창 류 (CWnd) 에 대해 서 는 CWnd 의 계승 상황 을 살 펴 볼 필요 가 있 습 니 다. CWnd 는 다음 과 같은 하위 클래스 가 있 습 니 다. CFrameWnd, CDialog, CView, CControlBar 등 이 있 습 니 다.이 클래스 에서 SetTimer 이 벤트 를 정의 할 수 있 음 을 의미 합 니 다.
이 동시에 SetTimer () 는 CWnd 에서 도 정의 되 었 는데, 즉 SetTimer () 는 CWnd 의 한 구성원 함수 이다.CWnd 의 하위 클래스 는 트리거 를 설정 하기 위해 이 함 수 를 호출 할 수 있 습 니 다.
 
UINT SetTimer( UINT nIDEvent, UINTnElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );
매개 변수 의미:
            nIDEvent: 이 타이머 의 iD, 즉 신분 표 지 를 설정 해 야 OnTimer () 이벤트 에서 서로 다른 타이머 에 따라 서로 다른 이벤트 응답 을 할 수 있 습 니 다.이 ID 는 부호 가 없 는 정형 이다.
           nElapse
시간 지연단 위 는 밀리초 이다.nElapse 밀리초 마다 Ontimer () 를 호출 한 다 는 뜻 이다.
           void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD)
Specifies the address of the application-supplied TimerProc callback function that processes theWM_TIMER messages. If this parameter is NULL, theWM_TIMER messages are placed in the application’s message queue and handled by theCWnd object。
        프로그램 이 제공 하 는 Timer Proc 리 셋 함수 의 주 소 를 지정 하여 이 Timer 이 벤트 를 처리 하 라 는 뜻 입 니 다.NULL 이 라면 이 Timer 이 벤트 를 처리 하 는 이 Timer 의 CWnd 대상 을 정의 합 니 다.그 는 WMTIMER 메 시 지 는 이 대상 에 게 전달 되 며, 이 대상 을 실현 하 는 OnTimer () 이 벤트 를 통 해 이 Timer 이 벤트 를 처리 합 니 다.
따라서 일반적인 상황 에서 우 리 는 이 값 을 NULL 로 설정 하고 이 타 이 머 를 설정 한 대상 중의 OnTimer () 함수 가 이 사건 을 처리 합 니 다.
마찬가지 로 KillTimer () 와 OnTimer () 의 정 의 를 다시 봅 시다.
KillTimer 는 SetTimer () 와 마찬가지 로 그 에 게 도 두 가지 가 있 습 니 다. 하 나 는 전역 적 인 것 입 니 다.: KillTimer (), 다른 하 나 는 CWnd 의 함수 입 니 다.그의 성명 은 다음 과 같다.
 
/ / 전역 함수
BOOL KillTimer(     HWND hWnd,      // handle of window that installed timer     UINT uIDEvent     // timer identifier );
/ / KWnd 함수
BOOL KillTimer( int nIDEvent);
이 두 함 수 는 iD 를 nIDEVENT 의 타이머 로 옮 기 는 것 을 나타 낸다.더 이상 작용 하지 않 게 하 다.그 용법 은 SetTimer () 와 같다.
OnTimer () 다시 보기
CWnd::OnTimer  
afx_msg void OnTimer( UINT nIDEvent);
ontimer () 는 CWnd 대상 에 응답 하 는 WM 입 니 다.타이머 메시지.nIDEvent 는 TIMER 이벤트 에 응답 할 ID 를 표시 합 니 다.
 
2. Timer 이벤트 의 사용:
이상 의 분석 을 통 해 우 리 는 Timer 사건 을 어떻게 사용 하 는 지 잘 알 아야 한다.우리 가 보기 에 그 라 데 이 션 애니메이션 을 그린다 고 가정 하 자.우선 메뉴 표시 줄 에 메뉴 항목 을 추가 하고 명령 응답 을 추가 합 니 다.
pView->SetTimer(1,1000,NULL);//pView 는 보기 류 의 지침 입 니 다. 보기 류 에 타 이 머 를 설정 합 니 다.
추가 완료, 보기 클래스 에 WM 추가타이머 이벤트 의 대응.OnTimer () 함수 에서 한 서 를 작성 하여 해당 합 니 다.
이렇게 하면 애니메이션 을 만 들 수 있다.

좋은 웹페이지 즐겨찾기