Udostępnij za pośrednictwem


CWnd::SetTimer

Instaluje czasomierz systemowy.

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

Parametry

  • nIDEvent
    Określa identyfikator niezerową czasomierza.Jeśli identyfikator timer jest unikatowy, tej samej wartości jest zwracany przez SetTimer.W przeciwnym razie SetTimer Określa nową unikatową wartość i zwraca go.Dla czasomierza okna (który ma wartość NULL funkcja wywołania zwrotnego) wartość musi być unikatowy tylko dla innych windows czasomierze, skojarzonych z bieżącym oknie.Dla czasomierz wywołania zwrotnego wartość musi być unikatowy dla wszystkie czasomierze wszystkich procesów.Dlatego podczas tworzenia czasomierza wywołania zwrotnego jest bardziej prawdopodobne, zwrócona wartość mogą różnić się od okreolona wartooć.

  • nElapse
    Określa wartość limitu czasu lub interwał, w milisekundach.

  • lpfnTimer
    Określa adres dostarczone aplikacji TimerProc funkcji wywołania zwrotnego, który przetwarza WM_TIMER wiadomości.Jeśli ten parametr jest NULL, WM_TIMER wiadomości są umieszczane w kolejce aplikacji i obsługiwane przez CWnd obiektu.

Wartość zwracana

Identyfikator czasomierza nowych timer, jeśli funkcja się powiedzie.Ta wartość może lub nie może być równa wartości przekazywane w nIDEvent parametru.Aplikacja zawsze należy przekazać wartość zwracana do KillTimer Członkowskich funkcji zabić timer.Niezerowa, jeśli kończy się pomyślnie; w przeciwnym razie 0.

Uwagi

Określono wartość interwału i każdym razem, gdy upłynie interwał, księguje system WM_TIMER wiadomości do kolejki wiadomości instalacja instalowanie aplikacji lub przekazaniem do zdefiniowanych przez aplikację TimerProc funkcji wywołania zwrotnego.

lpfnTimer Funkcji wywołania zwrotnego nie muszą nazwany TimerProc, ale go musi być zadeklarowany jako statyczny i zdefiniowane następująco.

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

Przykład

W tym przykładzie CWnd::SetTimer, CWnd::OnTimer, i CWnd::KillTimer do obsługi WM_TIMER wiadomości.Pierwszy timer jest skonfigurowany do wysyłania WM_TIMER komunikat do okna co 2 sekundy w ramce głównej OnStartTimer.OnTimer Uchwyty obsługi zdarzeń WM_TIMER wiadomości w oknie głównym ramki.Ta metoda powoduje głośnika PC sygnalizuje co 2 sekundy.Czasomierz drugiego wysyła wiadomość do funkcji wywołania zwrotnego, co 37.5 sekund.OnStopTimerprzestanie oba czasomierze, wywołując CWnd::KillTimer dla każdego identyfikatora czasomierza.

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);
}

Wymagania

Nagłówek: afxwin.h

Zobacz też

Informacje

Klasa CWnd

Wykres hierarchii

WM_TIMER

CWnd::KillTimer

SetTimer