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 de minuterie autre que zéro. 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 la retourne. Pour une minuterie de fenêtre (qui possède une fonction de rappel NULL), la valeur ne doit être unique que pour les autres minuteries Windows associées à la fenêtre active. Pour une minuterie de rappel, la valeur doit être unique pour toutes les minuteries de tous les processus. Par conséquent, lorsque vous créez une minuterie de rappel, il est plus probable que la valeur retournée diffère de la valeur que vous spécifiez.nElapse
Spécifie la valeur du délai d'attente ou l'intervalle, en millisecondes.lpfnTimer
Spécifie l'adresse de la fonction de rappel TimerProc fournie par l'application qui traite les messages WM_TIMER. Si ce paramètre a la valeur NULL, les messages WM_TIMER sont placés dans la file d'attente des messages de l'application et traités par l'objet CWnd.
Valeur de retour
L'identificateur de minuterie de la nouvelle minuterie si la fonction réussit. Cette valeur peut ou pas être égale à la valeur passée via le paramètre nIDEvent. Une application doit toujours passer la valeur de retour à la fonction membre KillTimer pour arrêter la minuterie. Différent de zéro si l'opération réussit ; sinon 0.
Notes
Une valeur d'intervalle est spécifiée, et chaque intervalle écoulé, le système publie un message WM_TIMER dans la file d'attente de messages d'installation de l'application en cours d'installation ou transmet le message à une fonction de rappel TimerProc définie par l'application.
La fonction de rappel lpfnTimer n'a pas besoin d'être nommée TimerProc, mais elle doit être déclarée comme statique 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::OnTimeret CWnd::KillTimer, pour traiter des messages WM_TIMER. La première minuterie est configurée pour envoyer un message WM_TIMER vers la fenêtre frame principale toutes les 2 secondes de OnStartTimer. Le gestionnaire d'événements OnTimer traite les messages WM_TIMER de la fenêtre frame principale. Cette méthode provoque l'émission d'un signal sonore par l'enceinte du PC toutes les 2 secondes. La deuxième minuterie envoie un message à la fonction de rappel toutes les 3,75 secondes. OnStopTimer arrête 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