CWnd::SetTimer
Installiert einen Systemzeitgeber.
UINT_PTR SetTimer(
UINT_PTR nIDEvent,
UINT nElapse,
void (CALLBACK* lpfnTimer
)(HWND,
UINT,
UINT_PTR,
DWORD
)
);
Parameter
nIDEvent
Gibt einen Zeitgeberbezeichner ungleich 0 (null) an.Wenn der Zeitgeberbezeichner eindeutig ist, wird der gleiche Wert durch SetTimer zurückgegeben.Andernfalls bestimmt SetTimer einen neuen eindeutigen Wert und gibt das.Bei einem Fensterzeitgeber (der eine Rückruffunktion NULL hat), muss der Wert nur für andere Fensterzeitgeber eindeutig sein, die mit dem aktiven Fenster zugeordnet sind.Für einen Rückrufzeitgeber muss der Wert für alle Zeitgeber in allen Prozessen eindeutig sein.Wenn Sie einen Rückrufzeitgeber erstellen, ist es wahrscheinlicher, dass der zurückgegebene Wert von dem Wert selbst abweichen, den Sie angeben.nElapse
Gibt den Timeoutwert oder Intervall, in Millisekunden.lpfnTimer
Gibt die Adresse der von der Anwendung bereitgestellten TimerProc Rückruffunktion an, die die WM_TIMER Meldungen verarbeitet.Wenn dieser Parameter NULL ist, werden die WM_TIMER Meldungen in die Meldungswarteschlange der Anwendung gespeichert und bearbeitet CWnd durch das Objekt.
Rückgabewert
Der Zeitgeberbezeichner des neuen Zeitgebers, wenn die Funktion erfolgreich.Dieser Wert ist möglicherweise gleich dem Wert, der in durch den nIDEvent-Parameter übergeben wird.Eine Anwendung sollte den Rückgabewert an die KillTimer-Memberfunktion immer übergeben, um den Zeitgeber abzubrechen.Ungleich 0 (null), wenn erfolgreich; andernfalls 0.
Hinweise
Ein Intervallwert angegeben wird, und bei jedem Ausführen des Intervalls, sendet das System eine WM_TIMER Meldung zur installierenden Meldungswarteschlange installierenden der Anwendung oder leitet die Meldung an eine anwendungsdefinierte TimerProc Rückruffunktion weiter.
Die lpfnTimer Rückruffunktion muss, nicht benannt werden TimerProc, sie muss als statisch deklariert werden und wie folgt definiert werden.
void CALLBACK TimerProc(
HWND hWnd, // handle of CWnd that called SetTimer
UINT nMsg, // WM_TIMER
UINT_PTR nIDEvent, // timer identification
DWORD dwTime // system time
);
Beispiel
In diesem Beispiel wird CWnd::SetTimer, CWnd::OnTimer und CWnd::KillTimer, um WM_TIMER Meldungen zu bearbeiten.Der erste Zeitgeber wird installiert, um eine WM_TIMER Meldung in das Hauptrahmenfenster zu senden alle 2 Sekunden in OnStartTimer.Der OnTimer-Ereignishandler bearbeitet WM_TIMER Meldungen für das Hauptrahmenfenster.Diese Methode wird der PC-Lautsprecher, alle 2 Sekunden zu piepen.Der zweite Zeitgeber sendet eine Meldung an die Rückruffunktion alle 37,5 Sekunden.OnStopTimer beide Zeitgeber beendet, indem CWnd::KillTimer für jede Zeitgeber ID aufruft
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);
}
Anforderungen
Header: afxwin.h