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

Siehe auch

Referenz

CWnd-Klasse

Hierarchien-Diagramm

WM_TIMER

CWnd::KillTimer

SetTimer