Compartir a través de


CWnd::SetTimer

Instala 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. De lo contrario, SetTimer determina un nuevo valor único y devuelve ese. Para un temporizador de ventana (que tenga una función de devolución de llamada NULL), el valor solo debe ser único para otros temporizadores de ventanas que están asociados a 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 crea un temporizador de devolución de llamada, es más probable que el valor devuelto pueda 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 TimerProc de devolución de llamada suministrada por la aplicación que procesa los mensajes WM_TIMER. Si este parámetro es NULL, los mensajes WM_TIMER se colocan en la cola de mensajes de la aplicación y se controlan mediante el objeto CWnd.

Valor devuelto

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

Comentarios

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

No es necesario asignar el nombre TimerProc a la función de devolución de llamada lpfnTimer, pero debe declararse como estática y definirse de la siguiente forma.

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 se configura para enviar un mensaje WM_TIMER a la ventana de marco principal cada 2 segundos en OnStartTimer. El controlador de eventos OnTimer controla los mensajes WM_TIMER para la ventana de marco principal. Este método hace que el altavoz del equipo emita un bip cada 2 segundos. El segundo temporizador envía un mensaje a la función de devolución de llamada cada 3,75 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

CWnd (clase)

Gráfico de jerarquías

WM_TIMER

CWnd::KillTimer

SetTimer