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