다음을 통해 공유


CWnd::SetTimer

시스템 타이머를 설치합니다.

UINT_PTR SetTimer(
   UINT_PTR nIDEvent,
   UINT nElapse,
   void (CALLBACK* lpfnTimer
)(HWND,
   UINT,
   UINT_PTR,
   DWORD
) 
);

매개 변수

  • nIDEvent
    0이 아닌 타이머 식별자를 지정합니다.타이머 식별자가 고유 하지 않으면이 동일한 값을 반환 하 여 SetTimer.그렇지 않으면 SetTimer 새 고유 값을 결정 하 고 반환 합니다.창 타이머 (있는 NULL 콜백 함수)에 대 한 값을 현재 창과 관련 된 다른 windows 타이머에 대 한 고유 해야 합니다.콜백 타이머 값 모든 타이머에서 모든 프로세스에 대해 고유 해야 합니다.따라서 콜백 타이머를 만들 때 지정 된 값에서 반환 된 값은 다를 수 있을 가능성이 높습니다.

  • nElapse
    제한 시간 값 또는 간격을 밀리초 단위로 지정합니다.

  • lpfnTimer
    응용 프로그램에서 제공한 주소 지정 TimerProc 을 처리 하는 콜백 함수는 WM_TIMER 메시지.이 매개 변수가 NULL, WM_TIMER 메시지를 응용 프로그램의 메시지 큐에 저장 하 고 처리는 CWnd 개체.

반환 값

함수가 성공 하면 새 타이머의 타이머 id입니다.이 값이 될 수 있습니다 또는를 통해 전달 된 값이 같지 않을 nIDEvent 매개 변수.응용 프로그램에 반환 값을 항상 전달 해야는 KillTimer 멤버 함수는 타이머를 죽 이십시오.성공 하면 0이 아닌. 그렇지 않으면 0입니다.

설명

간격 값을 지정 하 고 기간이 경과할 때마다 시스템 게시는 WM_TIMER 설치 응용 프로그램의 메시지 큐 설치 메시지 또는 메시지는 응용 프로그램 정의에 전달 TimerProc 콜백 함수입니다.

lpfnTimer 콜백 함수 이름을 지정 해야 하지 않은 TimerProc, 하지만 정적 및 정의 다음과 같이 선언 해야 합니다.

void CALLBACK TimerProc(
   HWND hWnd,      // handle of CWnd that called SetTimer
   UINT nMsg,      // WM_TIMER
   UINT_PTR nIDEvent,   // timer identification
   DWORD dwTime    // system time
);

예제

이 예제를 사용 하 여 CWnd::SetTimer, CWnd::OnTimer, 및 CWnd::KillTimer 처리 WM_TIMER 메시지.첫 번째 타이머 보내도록 설정 되어 있는 WM_TIMER 메시지가 주 프레임 창에 2 초 마다 OnStartTimer.OnTimer 이벤트 처리기 핸들 WM_TIMER 주 프레임 창에 대 한 메시지입니다.이 메서드는 2 초 마다 경고음을 PC 스피커가 됩니다.두 번째 타이머 37.5 초 마다 콜백 함수에 메시지를 보냅니다.OnStopTimer두 타이머를 호출 하 여 중지 됩니다 CWnd::KillTimer 에 각 타이머 id입니다.

void CMainFrame::OnStartTimer() 
{
    // This timer uses a WM_TIMER message, not a callback.
    // Therefore, the timer is specific to this window.
    // m_nWindowTimer is a UINT_PTR field.
    m_nWindowTimer = SetTimer(1, 2000, NULL);
    
    // For this demo, we specify an interval that won't overlap
    // with the window timer.
    m_nCallbackTimer = SetTimer(2, 3750, &CMainFrame::MyTimerProc);
    
    // See whether we got the ID we requested in the first parameter.
#ifdef _DEBUG
    CString str;
    str.Format(_T("m_ncallbackTImer ID = %d"), m_nCallbackTimer);
    TRACE(str);
#endif

}

 void CALLBACK CMainFrame::MyTimerProc(
   HWND hWnd,      // handle of CWnd that called SetTimer
   UINT nMsg,      // WM_TIMER
   UINT_PTR nIDEvent,   // timer identification
   DWORD dwTime    // system time
)
{
     MessageBeep(0x00000030L);   // Windows question sound.
}

void CMainFrame::OnStopTimer() 
{
   KillTimer(m_nWindowTimer);   
   KillTimer(m_nCallbackTimer);   
}

void CMainFrame::OnTimer(UINT nIDEvent) 
{
   MessageBeep(0xFFFFFFFF);   // Beep


   // Call base class handler.
   CMDIFrameWnd::OnTimer(nIDEvent);
}

요구 사항

헤더: afxwin.h

참고 항목

참조

CWnd 클래스

계층 구조 차트

WM_TIMER

CWnd::KillTimer

SetTimer