Condividi tramite


CWnd::SetTimer

Installa un timer di sistema.

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

Parametri

  • nIDEvent
    Specifica un identificatore diverso da zero del timer.Se l'identificatore del timer è univoco, questo stesso valore restituito da SetTimer.In caso contrario, SetTimer determina un nuovo valore univoco e restituisce l'oggetto.Per un timer della finestra (con una funzione di callback NULL), il valore deve essere univoco solo per gli altri timer di windows associati alla finestra corrente.Per un timer di callback, il valore deve essere univoco per tutti i timer in tutti i processi.Pertanto, quando si crea un timer di callback, è più probabile che il valore restituito può essere diverso dal valore specificato.

  • nElapse
    Specifica il valore di timeout, o l'intervallo, in millisecondi.

  • lpfnTimer
    Specifica l'indirizzo della funzione di callback applicazione fornita TimerProc che elabora i messaggi WM_TIMER.Se questo parametro è NULL, i messaggi WM_TIMER sono contenuti nella coda di messaggi dell'applicazione e gestiti dall'oggetto CWnd.

Valore restituito

Identificatore del timer di nuovo timer se la funzione ha esito positivo.Questo valore può essere uguale al valore passato al parametro nIDEvent.Un'applicazione deve passare sempre il valore restituito alla funzione membro KillTimer per interrompere il timer.Diverso da zero se ha esito positivo; in caso contrario, 0.

Note

Un valore di timeout viene specificato e ogni volta che l'intervallo trascorre, il sistema invia un messaggio WM_TIMER alla coda di messaggi installantesi dell'applicazione installantesi o passare il messaggio a una funzione di callback definita dall'applicazione TimerProc.

La funzione di callback lpfnTimer non deve essere denominata TimerProc, ma deve essere dichiarata come static ed essere definita come segue.

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

Esempio

In questo esempio viene utilizzato CWnd::SetTimer, CWnd::OnTimere CWnd::KillTimer per gestire i messaggi WM_TIMER.Il primo timer è configurato per inviare un messaggio WM_TIMER la finestra cornice principale ogni 2 secondi in OnStartTimer.Il gestore eventi OnTimer gestisce i messaggi WM_TIMER per la finestra cornice principale.Questo metodo fa l'altoparlante di PC a rilasciare un segnale acustico ogni 2 secondi.Il secondo timer invia un messaggio alla funzione di callback ogni 37,5 secondi.OnStopTimer interromperà entrambi i timer chiamando CWnd::KillTimer per ogni ID del timer

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

Requisiti

Intestazione: afxwin.h

Vedere anche

Riferimenti

Classe CWnd

Grafico della gerarchia

WM_TIMER

CWnd::KillTimer

SetTimer