Partager via


CWnd::SetTimer

Installe une horloge système.

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

Paramètres

  • nIDEvent
    Spécifie un identificateur différent de zéro de minuterie.Si l'identificateur de minuterie est unique, cette même valeur est retournée par SetTimer.Sinon, SetTimer détermine une nouvelle valeur unique et retourne plutôt.Pour une minuterie de fenêtre (qui possède une fonction de rappel NULL), la valeur doit être unique que d'autres minuteries windows associées à la fenêtre active.Pour une minuterie de rappel, la valeur doit être unique pour toutes les délais de tous les processus.Par conséquent, lorsque vous créez une minuterie de rappel, il est plus probable que la valeur retournée peut différer de la valeur que vous spécifiez.

  • nElapse
    Spécifie la valeur du délai d'attente, ou la plage, en millisecondes.

  • lpfnTimer
    Spécifie l'adresse de la fonction de rappel fournie par l'application d' TimerProc qui traite les messages de WM_TIMER .Si ce paramètre est NULL, les messages d' WM_TIMER dans la file d'attente de messages de l'application et gérés par l'objet d' CWnd .

Valeur de retour

L'identificateur de délai de la nouvelle minuterie si la fonction est réussie.Cette valeur peut ou ne peut pas être égale à la valeur passée via le paramètre d' nIDEvent .Une application doit toujours passer la valeur de retour à la fonction membre de KillTimer pour détruire la minuterie.Une valeur différente de zéro si l'opération a réussi ; sinon, 0.

Notes

Une valeur d'intervalle est spécifiée, et chaque fois l'intervalle s'écoule, le système publie un message d' WM_TIMER à la file d'attente de messages installante de l'application installante ou passe le message à une fonction de rappel définie par l'application d' TimerProc .

La fonction de rappel d' lpfnTimer n'a pas besoin d'être nommée TimerProc, mais elle doit être déclarée comme static et être définie comme suit.

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

Exemple

Cet exemple utilise CWnd::SetTimer, CWnd::OnTimer, et CWnd::KillTimer pour gérer des messages d' WM_TIMER .La première minuterie est configurée pour envoyer un message d' WM_TIMER à la fenêtre frame principale toutes les 2 secondes dans OnStartTimer.Le gestionnaire d'événements d' OnTimer gère les messages d' WM_TIMER de la fenêtre frame principale.Cette méthode effectue le bip-bip l'enceinte pour PC toutes les 2 secondes.La deuxième minuterie envoie un message à la fonction de rappel toutes les 37,5 secondes.OnStopTimer arrêtera les deux minuteries en appelant CWnd::KillTimer pour chaque ID de minuterie

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

Configuration requise

En-tête : afxwin.h

Voir aussi

Référence

CWnd, classe

Graphique de la hiérarchie

WM_TIMER

CWnd::KillTimer

SetTimer