Compartir a través de


CWnd::SetTimer

Instalar un temporizador del sistema.

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

Parámetros

  • nIDEvent
    Especifica un identificador de temporizador distinto de cero.Si el identificador de temporizador es único, este mismo valor es devuelto por SetTimer.Si no, SetTimer determina un nuevo valor único y devuelve.Para un temporizador de la ventana (que tiene una función de devolución de llamada NULL), el valor debe ser único sólo para otros temporizadores de las ventanas que están asociados con la ventana actual.Para un temporizador de devolución de llamada, el valor debe ser único para todos los temporizadores de todos los procesos.Por consiguiente, cuando se crea un temporizador de devolución de llamada, es más probable que el valor devuelto puede diferir del valor especificado.

  • nElapse
    Especifica el valor de tiempo de espera, o intervalo, en milisegundos.

  • lpfnTimer
    Especifica la dirección de la función de devolución de llamada aplicación-proporcionada de TimerProc que procesa los mensajes de WM_TIMER .Si este parámetro es NULL, los mensajes de WM_TIMER se colocan en la cola de mensajes de la aplicación y se administran por el objeto de CWnd .

Valor devuelto

El identificador de temporizador de nuevo temporizador si la función es correcta.Este valor puede o no puede ser igual al valor pasado al parámetro de nIDEvent .Una aplicación debe pasar siempre el valor devuelto a la función miembro de KillTimer para eliminar el temporizador.Distinto de cero si correctamente; de lo contrario, 0.

Comentarios

Un valor de intervalo se especifica, y cada vez que transcurre el intervalo, los elementos que envía el sistema un mensaje de WM_TIMER a la cola de mensajes que instala de la aplicación que instala o pasa el mensaje a una función de devolución de llamada definido por la aplicación de TimerProc .

La función de devolución de llamada de lpfnTimer no necesita llamar TimerProc, pero debe declararse como static y definidos como sigue.

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

Ejemplo

Este ejemplo utiliza CWnd::SetTimer, CWnd::OnTimer, y CWnd::KillTimer para controlar los mensajes de WM_TIMER .El primer temporizador está configurado de enviar un mensaje de WM_TIMER a la ventana de marco principal cada 2 segundos en OnStartTimer.El controlador de eventos OnTimer controla los mensajes de WM_TIMER para la ventana de marco principal.Este método hace el altavoz de PC para notificar cada 2 segundos.El segundo temporizador envía un mensaje a la función de devolución de llamada cada 37,5 segundos.OnStopTimer detendrá ambos temporizadores llamando a CWnd::KillTimer para cada identificador de temporizador

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

Requisitos

Encabezado: afxwin.h

Vea también

Referencia

Clase de CWnd

Gráfico de jerarquía

WM_TIMER

CWnd::KillTimer

SetTimer